This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM62P:使用 V4L2应用程序捕获图像失败

Guru**** 1980945 points
Other Parts Discussed in Thread: AM62P
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1413138/am62p-capturing-images-with-the-v4l2-application-failed

器件型号:AM62P

工具与软件:

我在开发摄像头启动过程中遇到了一个问题。 详细信息如下:

共有四个摄像头连接到解串器。 但不需要控制这四个摄像头、因此我只实现了解串器的驱动器。

我是根据《处理器 SDK Linux 软件开发人员指南》的第3.2.2.2章 CSI2RX 开发的。

已探测驱动程序、以下是来自 lsmode 和媒体图表的日志。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ lsmod | grep 712
max96712 12288 1
v4l2_async 20480 4 v4l2_fwnode,j721e_csi2rx,cdns_csi2rx,max96712
videodev 258048 8 v4l2_async,v4l2_fwnode,j721e_csi2rx,videobuf2_v4l2,cdns_csi2rx,max96712,v4l2_mem2mem,wave5
mc 61440 8 v4l2_async,videodev,j721e_csi2rx,videobuf2_v4l2,cdns_csi2rx,videobuf2_common,max96712,v4l2_mem2mem
$ media-ctl -p
Media controller API version 6.6.32
Media device information
------------------------
driver j721e-csi2rx
model TI-CSI2RX
serial
bus info platform:30102000.ticsi2rx
hw revision 0x1
driver version 6.6.32
Device topology
- entity 1: 30102000.ticsi2rx (7 pads, 7 links, 1 route)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

示波器测量可以确认 解串器 此时已发送图像数据。

当我继续执行捕获原始帧命令时、收到一条错误消息:找不到传感器

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ LIBCAMERA_LOG_LEVELS=*:DEBUG cam -c1 --stream width=640,height=480,pixelformat=UYVY -C20
[5:28:22.165815510] [1384] DEBUG IPAModule ipa_module.cpp:334 ipa_rkisp1.so: IPA module /usr/lib/libcamera/ipa_rkisp1.so is signed
[5:28:22.166152500] [1384] DEBUG IPAManager ipa_manager.cpp:245 Loaded IPA module '/usr/lib/libcamera/ipa_rkisp1.so'
[5:28:22.166392220] [1384] DEBUG IPAModule ipa_module.cpp:334 ipa_rpi_vc4.so: IPA module /usr/lib/libcamera/ipa_rpi_vc4.so is signed
[5:28:22.166492085] [1384] DEBUG IPAManager ipa_manager.cpp:245 Loaded IPA module '/usr/lib/libcamera/ipa_rpi_vc4.so'
[5:28:22.166631620] [1384] INFO Camera camera_manager.cpp:284 libcamera v0.2.0+dirty (2024-08-19T13:39:16+00:00)
[5:28:22.167048720] [1385] DEBUG Camera camera_manager.cpp:69 Starting camera manager
[5:28:22.180743400] [1385] DEBUG DeviceEnumerator device_enumerator.cpp:230 New media device "j721e-csi2rx" created from /dev/media0
[5:28:22.181584125] [1385] DEBUG DeviceEnumerator device_enumerator_udev.cpp:96 Defer media device /dev/media0 due to 7 missing dependencies
[5:28:22.185222680] [1385] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media0 found
[5:28:22.185301070] [1385] DEBUG DeviceEnumerator device_enumerator.cpp:258 Added device /dev/media0: j721e-csi2rx
[5:28:22.186494685] [1385] DEBUG Camera camera_manager.cpp:113 Found registered pipeline handler 'PipelineHandlerISI'
[5:28:22.186635085] [1385] DEBUG Camera camera_manager.cpp:113 Found registered pipeline handler 'PipelineHandlerRkISP1'
[5:28:22.186725140] [1385] DEBUG Camera camera_manager.cpp:113 Found registered pipeline handler 'PipelineHandlerVc4'
[5:28:22.186778740] [1385] DEBUG RPI vc4.cpp:179 Unable to acquire a Unicam instance
[5:28:22.186801965] [1385] DEBUG RPI vc4.cpp:179 Unable to acquire a Unicam instance
[5:28:22.186824330] [1385] DEBUG Camera camera_manager.cpp:113 Found registered pipeline handler 'SimplePipelineHandler'
[5:28:22.186854935] [1385] DEBUG DeviceEnumerator device_enumerator.cpp:318 Successful match for media device "j721e-csi2rx"
[5:28:22.186930735] [1385] ERROR SimplePipeline simple.cpp:1424 No sensor found
[5:28:22.186964820] [1385] DEBUG Camera camera_manager.cpp:113 Found registered pipeline handler 'PipelineHandlerUVC'
Camera 1 not found
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

相关 DTS 文件如下。 您能否帮助确认此错误的原因?

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
&main_i2c1 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
camera@27 {
compatible = "maxim,max96712";
reg = <0x27>;
clocks = <&clk_max96712_fixed>;
clock-names = "xclk";
port {
csi2_cam0: endpoint {
remote-endpoint = <&csi2rx0_in_sensor>;
#link-frequencies = /bits/ 64 <456000000>;
clock-lanes = <0>;
data-lanes = <1 2 3 4>;
};
};
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您的"c4l2-ctl --list-devices"显示什么? 您能否尝试使用 yavta 进行捕获、看看这是否有效?

    此致、

    建中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这是 使用 v4l2-ctl 和 yavta 测试的日志。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $ v4l2-ctl --list-devices
    j721e-csi2rx (platform:30102000.ticsi2rx):
    /dev/video2
    /dev/video3
    /dev/video4
    /dev/video5
    /dev/video6
    /dev/video7
    /dev/media0
    wave5-dec (platform:30210000.video-codec):
    /dev/video0
    /dev/video1
    $ v4l2-ctl -d2 --stream-mmap -v width=640,height=480,pixelformat=UYVY
    VIDIOC_STREAMON returned -1 (Broken pipe)
    $ yavta -s 640x480 -f UYVY /dev/video2 -c20
    Device /dev/video2 opened.
    Device `j721e-csi2rx' on `platform:30102000.ticsi2rx' (driver 'j721e-csi2rx') supports video, capture, without mplanes.
    Video format set: UYVY (59565955) 640x480 (stride 1280) field none buffer size 614400
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的建中:

    需要您对此问题给予高优先级当您回到办公室时、客户需要尽快将软件交付给汽车 OEM。

    BR、

    Biao

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Cheng Nu、您好!

    您的"v4l2-ctl --list-devices"看起来正常。

    一些问题和建议:

    1.为什么设备树的链路频率行中有"#"?

    #link-frequencies =/bits/ 64 <456000000>;

    2. 从"meida-ctl -p"的输出来看、"cdns_csi2rx.30101000.csi-bridge"和"max96712 1-0027"的格式不匹配。 请参阅 此常见问题解答 、了解如何配置媒体管道格式。

    3.是否可以在运行 yavta 命令时使用 devmem2来检查这些寄存器?

    • devmem2 0x30101020 w
    • devmem2 0x30101104 w
    • devmem2 0x30111000 w

    有关这些寄存器的更多信息、请参阅之前的主题。

    此致、

    建中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、建中:

    在驱动程序中定义了链路频率、我将在设备树中删除链路频率行。

    2.我 修改了介质管道格式,但仍然 不起作用。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $ media-ctl -p
    Media controller API version 6.6.32
    Media device information
    ------------------------
    driver j721e-csi2rx
    model TI-CSI2RX
    serial
    bus info platform:30102000.ticsi2rx
    hw revision 0x1
    driver version 6.6.32
    Device topology
    - entity 1: 30102000.ticsi2rx (7 pads, 7 links, 1 route)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev0
    routes:
    0/0 -> 1/0 [ACTIVE]
    pad0: Sink
    [stream:0 fmt:UYVY8_1X16/1920x1536 field:none]
    <- "cdns_csi2rx.30101000.csi-bridge":1 [ENABLED,IMMUTABLE]
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    这是 寄存器值。 您可以帮助检查它吗?

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    devmem2 0x30101020 w
    /dev/mem opened.
    Memory mapped at address 0xffff7ffe6000.
    Read at address 0x30101020 (0xffff7ffe6020): 0x00000000
    $ devmem2 0x30101104 w
    /dev/mem opened.
    Memory mapped at address 0xffffa3a1b000.
    Read at address 0x30101104 (0xffffa3a1b104): 0x80000111
    $ devmem2 0x30111000 w
    /dev/mem opened.
    Memory mapped at address 0xffff97dc7000.
    Read at address 0x30111000 (0xffff97dc7000): 0x40800000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    谢谢!

    Cheng Nu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、建中:

    在我更改了 max96712的驱动程序后、我现在可以捕获图像。 但图像似乎异常,如下图所示。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $ yavta -s 1920x1536 -f UYVY /dev/video2 -c20 -F#.uyvy
    Device /dev/video2 opened.
    Device `j721e-csi2rx' on `platform:30102000.ticsi2rx' (driver 'j721e-csi2rx') supports video, capture, without mplanes.
    Video format set: UYVY (59565955) 1920x1536 (stride 3840) field none buffer size 5898240
    Video format: UYVY (59565955) 1920x1536 (stride 3840) field none buffer size 5898240
    8 buffers requested.
    length: 5898240 offset: 0 timestamp type/source: mono/EoF
    Buf[ 640.925244] max96712 1-0027: s_stream true
    fer 0/0 mapped at address 0xffffa01f0000.
    length: 5898240 offset: 5898240 timestamp type/source: mono/EoF
    Buffer 1/0 mapped at address 0xffff9fc50000.
    length: 5898240 offset: 11796480 timestamp type/source: mono/EoF
    Buffer 2/0 mapped at address 0xffff9f6b0000.
    length: 5898240 offset: 17694720 timestamp type/source: mono/EoF
    Buffer 3/0 mapped at address 0xffff9f110000.
    length: 5898240 offset: 23592960 timestamp type/source: mono/EoF
    Buffer 4/0 mapped at address 0xffff9eb70000.
    length: 5898240 offset: 29491200 timestamp type/source: mono/EoF
    Buffer 5/0 mapped at address 0xffff9e5d0000.
    length: 5898240 offset: 35389440 timestamp type/source: mono/EoF
    Buffer 6/0 mapped at address 0xffff9e030000.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    实际上、解串器 max96712通过四个虚拟通道传输来自四个摄像头的图像数据。

    如何修改设备树以完成四摄像头配置? 您能否提供示例 DTS?

    谢谢!

    Cheng Nu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Cheng Nu:

    请参阅 ds90ub960驱动程序和 multi-IMX390设备树以获取参考:

    此致、

    建中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但这四个摄像头不需要控制,因此我只为解串器实现了驱动程序。

    您的意思是摄像头不是由 AM62A 控制、而是可以自行开始流式传输?  

    我修改了 ub960、ub953和 imx219的驱动程序以满足我的需要。

    您使用的 SerDes 与 ub960/ub953不同。  确保驱动程序将正确的值写入正确的寄存器。

    [quote userid="623005" url="~/support/processors-group/processors/f/processors-forum/1413138/am62p-capturing-images-with-the-v4l2-application-failed 示波器测量可确认 解串器 此时已发送图像数据。

    如何确保解串器发送的图像数据有效? 如何将数据从传感器发送到解串器? 您能否验证它是否有效?

    是否可以使用 IMX219或 OV5640和您的 SerDes 进行概念验证? 我们知道 AM62P 支持 IMX219和 OV5640。

    此致、

    建中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、建中:

    我将验证 解串器发送的图像数据的有效性。

    另外、 解串器 MAX96712的数据速率为2Gbps/通道、这是 Maxim 建议的数据速率、因为需要发送4个通道的3M 图像数据。

    将 cdns_csi2rx0的链路频率更改为1000000000是否合适?  

    顺便说一句,你可以帮助提供一种方法来打开 mipi 偏斜?

    谢谢!

    Cheng Nu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、建中:

    很高兴了解最新进展情况。

    我尝试只连接三个摄像头,发现我可以通过 yavta 从三个摄像头捕捉正确的图像数据。

    因此、我认为问题在于 cdns_csi2rx0的数据速率 配置不正确。

    您能否帮助确认如何配置2Gbps/通道 或适当的速率?

    我们的图像格式为1920x1536@30fps YUV422-8位。

    谢谢!

    Cheng Nu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Cheng Nu、您好!

    是否可以将 cdns_csi2rx0的链路频率更改为1000000000?  [报价]

    我认为您不需要将链路频率设置为这么高。 公式为:link_freq = bits_per_sample * pixel_rate / 2 / nr_of_Lanes。

    在您的用例中、 如果您使用4个通道、则 link-freq = 16x1920x1536x30 / 2 / 4 ~= 177MHz。

    您当前使用的链路频率是多少?

    我尝试仅连接三台摄像机、发现我可以通过 yavta 从三台摄像机捕捉正确的图像数据。

    是否确定是链路频率问题? 如果您连接所有摄像机、那么4个摄像机中的每一个都只能使用一个摄像机进行拍摄吗?

    此致、

    建中

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、建中

    您当前使用的链接频率是多少

    我当前正在尝试使用以下两种链路频率、但结果似乎相同、因此我不知道我的更改是否可行。

    • Link-frequencies =/bits/ 64 <800000000>;
    • 链路频率=/bits/ 64 <1000000000>;
    [报价 userid="35284" url="~/support/processors-group/processors/f/processors-forum/1413138/am62p-capturing-images-with-the-v4l2-application-failed/5429929 #5429929"]对于您的用例、 如果您使用的是4个通道、则 link-freq = 16x1920x1536x30 / 2 / 4 ~= 177MHz。

    是的、我使用4个通道。 但需要注意的是、四个摄像头的图像数据是同时传输的、因此结果需要乘以4。

    如果您连接了所有摄像机、那么4台摄像机中的每台只能用一台摄像机进行拍摄吗?

    如果我连接四台相机,我拍摄的图像都异常,就像几天前发布的一样。

    所以我想尝试更改链路频率以对其进行测试。

    您能否帮助确认修改链接频率和打开 mipi 偏斜的方法?

    谢谢!

    Cheng Nu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="623005" url="~/support/processors-group/processors/f/processors-forum/1413138/am62p-capturing-images-with-the-v4l2-application-failed/5430113 #5430113"]是的、我使用的是4个通道。 但需要注意的是、四个摄像机的图像数据是同时传输的、因此结果需要乘以4。

    感谢您的纠正。 你是对的。 它   ~为 link-freq = 16x1920x1536x30x4 / 2 / 4 μ s = 708MHz。 因此800MHz 应该没有问题。

    在 TI 的 SDK 中、链路频率在此 DTS 中指定: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62a7-sk-fusion.dtso?h=ti-linux-6.6.y

    CSI 偏差校准在以下位置完成: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/media/i2c/ds90ub960.c?h=ti-linux-6.6.y#n1757。  

    您可以在此函数中添加一些调试文件以验证配置的链接频率: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/media/platform/cadence/cdns-csi2rx.c?h=ti-linux-6.6.y#n193。

    此致、

    建中

x 出现错误。请重试或与管理员联系。