2394184_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2394184_zh-CN

2394184_zh-CN

FRDM i.MX93 上的 AP1302 MIPI CSI 流问题

你好,

我使用的是FRDM i.MX93开发板和X-RPI-CAM-MIPI A1摄像头模块。

我遇到的问题是,我无法从此设置中捕获 MIPI CSI 流。

我已将固件二进制文件ap1302_60fps_ar0144_27M_2Lane_awb_tuning.bin放置在以下位置:“/lib/firmware”

启动过程中,我看到 AP1302 被成功检测到,但是当我尝试启动视频流时, VIDIOC_STREAMON出现“管道破裂”错误。

以下是相关日志。

内核日志:

root@imx93evk:~# dmesg | grep ap1302
[    0.340980] /soc@0/bus@42000000/i2c@42530000/ap1302_mipi@3c: Fixed dependency cycle(s) with /soc@0/bus@42800000/csi@4ae00000
[    0.371014] /soc@0/bus@42800000/csi@4ae00000: Fixed dependency cycle(s) with /soc@0/bus@42000000/i2c@42530000/ap1302_mipi@3c
...
[   10.088832] ap1302 2-003c: AP1302 revision 0.2.6 detected

流媒体测试:

root@imx93evk:~# v4l2-ctl -d /dev/video0 \
    --verbose \
    --stream-mmap=3 \
    --stream-count=10

VIDIOC_QUERYCAP: ok
VIDIOC_REQBUFS returned 0 (Success)
VIDIOC_CREATE_BUFS returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_G_FMT returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_STREAMON returned -1 (Broken pipe)

请问您能否帮我理解一下为什么VIDIOC_STREAMON会出现“管道破裂”错误?

在成功开始流媒体传输之前,AP1302 固件、设备树、媒体管道或传感器初始化是否需要任何额外的配置?

此外,我目前使用的是“LF_v6.18.2-1.0.0_images_IMX93EVK”预构建镜像。

如果您需要任何其他日志或信息,请告诉我。

感谢您的支持。

Re: AP1302 MIPI CSI Streaming Issue on FRDM i.MX93

与AE团队讨论。

Re: AP1302 MIPI CSI Streaming Issue on FRDM i.MX93

你好@yipingwang

感谢您的反馈,

我的回答如下,供您参考。

1. 固件位置

我尝试了推荐的固件安装位置,也尝试了每个位置的单独安装。仅当使用ap1302_ar0144_single_fw.bin时,相机探测才会成功。

root@imx93evk:~# ls -la /lib/firmware/ap1302_ar0144_single_fw.bin
-rw-r--r-- 1 root root 80528 Aug  5 15:36 /lib/firmware/ap1302_ar0144_single_fw.bin

root@imx93evk:~# ls -la /lib/firmware/imx/camera/ap1302.fw
-rw-r--r-- 1 root root 80528 Aug  5 15:38 /lib/firmware/imx/camera/ap1302.fw

启动过程中成功检测到 AP1302。

root@imx93evk:~# dmesg | grep -i ap1302
...
[    9.962705] ap1302 2-003c: AP1302 revision 0.2.6 detected

但是,我在内核日志中没有看到任何与 AP1302 相关的固件加载消息。


2. 软件环境

我使用的是为FRDM i.MX93板提供的预构建镜像。

root@imx93evk:~# cat /proc/device-tree/model
NXP FRDM-IMX93

root@imx93evk:~# cat /proc/cmdline
console=ttyLP0,115200 earlycon root=/dev/mmcblk0p2 rootwait rw

AP1302 检测成功,CSI/ISI 设备也存在。我已附上完整的日志供您参考。


3. 媒体管道

媒体管道似乎已正确创建。

root@imx93evk:~# ls /dev/media0
/dev/media0

root@imx93evk:~# ls /dev/video*
/dev/video0  /dev/video1

media-ctl 的输出显示 AP1302、CSI 和 ISI 实体已启用。完整的 media-ctl 输出结果已附上,供您参考。


4. 补充信息

请参考附件fourth_point.txt文件以获取所需信息。


5. 流媒体播放失败

当流媒体命令失败时,我没有看到任何其他内核消息。

root@imx93evk:~# dmesg -c

root@imx93evk:~# v4l2-ctl -d /dev/video0 --stream-mmap=3 --stream-count=10
VIDIOC_STREAMON returned -1 (Broken pipe)

root@imx93evk:~# dmesg

故障发生后,dmesg 输出仍然为空,因此没有额外的内核日志可以帮助确定根本原因。

由于 AP1302 已被成功检测到,媒体图也已正确创建,并且在 VIDIOC_STREAMON 期间没有报告任何内核错误,请问我应该执行哪些额外的检查或调试步骤来确定为什么流媒体播放失败并出现“管道破裂”错误?

感谢您的支持。


root@imx93evk:~# v4l2-ctl --list-devices
mxc-isi-cap (platform:4ae40000.isi):
        /dev/video0
        /dev/video1
        /dev/media0

root@imx93evk:~# v4l2-ctl -d /dev/video0 --all
Driver Info:
        Driver name      : mxc-isi
        Card type        : mxc-isi-cap
        Bus info         : platform:4ae40000.isi
        Driver version   : 6.18.2
        Capabilities     : 0xa4201000
                Video Capture Multiplanar
                I/O MC
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x24201000
                Video Capture Multiplanar
                I/O MC
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : mxc-isi
        Model            : FSL Capture Media Device
        Serial           : 
        Bus info         : platform:4ae40000.isi
        Media version    : 6.18.2
        Hardware revision: 0x00000000 (0)
        Driver version   : 6.18.2
Interface Info:
        ID               : 0x0300000a
        Type             : V4L Video
Entity Info:
        ID               : 0x00000008 (8)
        Name             : mxc_isi.0.capture
        Function         : V4L2 I/O
        Pad 0x01000009   : 0: Sink
          Link 0x0200000c: from remote pad 0x1000007 of entity 'mxc_isi.0' (Video Pixel Formatter): Data, Enabled, Immutable
Priority: 2
Video input : 0 (mxc_isi.0.capture: ok)
Format Video Capture Multiplanar:
        Width/Height      : 1920/1080
        Pixel Format      : 'YUYV' (YUYV 4:2:2)
        Field             : None
        Number of planes  : 1
        Flags             : 
        Colorspace        : sRGB
        Transfer Function : sRGB
        YCbCr/HSV Encoding: ITU-R 601
        Quantization      : Limited Range
        Plane 0           :
           Bytes per Line : 3840
           Size Image     : 4147200

User Controls

                horizontal_flip 0x00980914 (bool)   : default=0 value=0 flags=0x00001000
                  vertical_flip 0x00980915 (bool)   : default=0 value=0 flags=0x00001000
                alpha_component 0x00980929 (int)    : min=0 max=255 step=1 default=0 value=0 flags=0x00001000
root@imx93evk:~# media-ctl -p
Media controller API version 6.18.2

Media device information
------------------------
driver          mxc-isi
model           FSL Capture Media Device
serial          
bus info        platform:4ae40000.isi
hw revision     0x0
driver version  6.18.2

Device topology
- entity 1: crossbar (3 pads, 3 links, 1 route)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
        routes:
                0/0 -> 2/0 [ACTIVE]
        pad0: SINK,MUST_CONNECT
                [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
                <- "csidev-4ae00000.csi":1 [ENABLED,IMMUTABLE]
        pad1: SINK,MUST_CONNECT
                <- "mxc_isi.output":0 [ENABLED,IMMUTABLE]
        pad2: SOURCE
                [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
                -> "mxc_isi.0":0 [ENABLED,IMMUTABLE]

- entity 5: mxc_isi.0 (2 pads, 2 links, 0 routes)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
        pad0: SINK
                [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
                 compose.bounds:(0,0)/1920x1080
                 compose:(0,0)/1920x1080]
                <- "crossbar":2 [ENABLED,IMMUTABLE]
        pad1: SOURCE
                [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
                 crop.bounds:(0,0)/1920x1080
                 crop:(0,0)/1920x1080]
                -> "mxc_isi.0.capture":0 [ENABLED,IMMUTABLE]

- entity 8: mxc_isi.0.capture (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
        pad0: SINK
                <- "mxc_isi.0":1 [ENABLED,IMMUTABLE]

- entity 16: mxc_isi.output (1 pad, 1 link)
             type Node subtype V4L flags 0
        pad0: SOURCE
                -> "crossbar":1 [ENABLED,IMMUTABLE]

- entity 23: csidev-4ae00000.csi (2 pads, 2 links, 1 route)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev2
        routes:
                0/0 -> 1/0 [ACTIVE]
        pad0: SINK
                [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:smpte170m xfer:709 ycbcr:601 quantization:lim-range]
                <- "ap1302 2-003c":2 [ENABLED]
        pad1: SOURCE
                [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:smpte170m xfer:709 ycbcr:601 quantization:lim-range]
                -> "crossbar":0 [ENABLED,IMMUTABLE]

- entity 28: ap1302 2-003c (3 pads, 2 links, 0 routes)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev4
        pad0: SINK
                [stream:0 fmt:SGRBG12_1X12/1280x800 field:none colorspace:srgb
                 crop.bounds:(0,0)/1280x800
                 crop:(0,0)/1280x800]
                <- "ar0144 0":0 [ENABLED,IMMUTABLE]
        pad1: SINK
                [stream:0 fmt:SGRBG12_1X12/1280x800 field:none colorspace:srgb
                 crop.bounds:(0,0)/1280x800
                 crop:(0,0)/1280x800]
        pad2: SOURCE
                [stream:0 fmt:UYYVYY8_0_5X24/4224x4092 field:none colorspace:srgb
                 crop.bounds:(0,0)/1280x800
                 crop:(0,0)/1280x800]
                -> "csidev-4ae00000.csi":0 [ENABLED]

- entity 32: ar0144 0 (1 pad, 1 link, 0 routes)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev3
        pad0: SOURCE
                [stream:0 fmt:SGRBG12_1X12/1280x800 field:none colorspace:srgb]
                -> "ap1302 2-003c":0 [ENABLED,IMMUTABLE]

此致,
米拉夫

Re: AP1302 MIPI CSI Streaming Issue on FRDM i.MX93

AP1302 探测成功并不能保证整个摄像机管道已配置完毕并开始传输。在 i.MX93 上,VIDIOC_STREAMON 返回 -1(管道破裂)通常意味着媒体管道元器件之一(AP1302 → MIPI CSI-2 接收器 → ISI 捕获路径)未能启动或协商有效流。您的日志仅确认检测到了 AP1302 I²C 设备:

ap1302 2-003c:检测到 AP1302 版本 0.2.6

但这并不能证实这一点:

  • 固件加载成功。
  • 使用了正确的DTB。
  • 媒体关系图已创建完成。
  • CSI接收器锁定到传入的MIPI数据,
  • AP1302 已配置为匹配的输出格式。

首先我会检查:固件位置/名称

关于 FRDM-i.MX93 AP1302 支持,NXP 文档指出:

  1. 下载 ap1302_60fps_ar0144_27M_2Lane_awb_tuning.bin
  2. 将其重命名为ap1302.fw
  3. 放入:

/lib/firmware/imx/camera/ap1302.fw

不仅仅是 /lib/firmware。

请核实:

ls -l /lib/firmware/imx/camera/ap1302.fw


并检查启动日志:

dmesg | grep -i 固件

dmesg | grep -i ap1302

查找类似这样的消息:

请求固件

固件已加载

固件加载失败

第二步:你使用的是正确的DTB吗?

版本说明表明 AP1302 支持与 i.MX93 EVK 设备树支持相关。

检查:

cat /proc/device-tree/model

cat /proc/cmdline

并确定实际加载的 DTB。

另请查看:

dmesg | grep -i ap1302

dmesg | grep -i csi

dmesg | grep -i isi

第三项检查:验证介质拓扑结构

在尝试使用 v4l2-ctl 之前,请先验证媒体图是否存在:

shell

media-ctl -p

显示更多行

您应该会看到类似以下的实体:

ap1302

CSI

伊西

videoX

如果 /dev/media0 不存在,则相机管道创建不正确。一个非常相似的FRDM-i.MX93 AP1302案例显示:

media-ctl -p

枚举 /dev/media0 失败

这表明媒体管道尚未实例化。

请检查:

ls -l /dev/media*


第四项检查:检查协商好的格式

运行:

v4l2-ctl --list-devices

以及

v4l2-ctl -d /dev/video0 --all

另外:

media-ctl -p

AP1302 固件通常输出处理后的 YUV 格式,而不是 RAW Bayer 格式。另一个常见的故障是:

AP1302 输出格式 A

ISI 配置为 B 格式

导致流媒体启动失败。格式不匹配通常表现为 STREAMON 故障或 CSI 管道错误。

第五项检查:在 STREAMON 期间检查 CSI 错误

打开另一个终端并进行监测:

dmesg -w

然后运行:

v4l2-ctl -d /dev/video0 \

--stream-mmap=3 \

--stream-count=10


查找类似这样的消息:

CSI超时

帧开始超时

未收到任何数据

先进先出溢出

MIPI错误

链接未启用


这些信息通常会揭示管道破裂的真正原因。

标记 (1)
无评分
版本历史
最后更新:
14 小时之前
更新人: