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.

[参考译文] AM625:用于多摄像头应用的 media-ctl 配置

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1502434/am625-media-ctl-configuration-for-multiple-camera-application

器件型号:AM625

工具/软件:

大家好:

我通过参考 ds90ub960/ds90ub953开发了 MAX96716/MAX96717驱动程序。 这些驱动程序都按预期工作、并传递它们的探测器、然后写入它们的寄存器。 我`s了` etup_camers.sh 脚本创建了一个 media-ctl 设置脚本、请参阅以下内容:

```μ s

#!/bin/bash

Setup_ov2311 (){
OV2311_CAM_FMT='[fmt:Y8_1X8/1280x800]'

I=0
对于{0..0}中的 media_id;执行
# MAX96717格式
MAX96716_FMT_STR="["
CSI2RX_FMT_STR="["
在`media-ctl -d $media_id -p | grep entity | grep ov2311_mipi | cut -d ''-f 5`;do 中输入名称

CAM_SUBDEV=`media-ctl -d $media_id -p -e "ov2311_mipi $name"| grep v4l-subdev | awk '{print 4美元}'`

MAX96717_NAME=`media-ctl -d $media_id -p -e "ov2311_mipi $NAME"| grep max96717 | cut -d "\"-f 2`
media-ctl -d $media_id -V "'$MAX96717_name':0 $OV2311_CAM_FMT"

MAX96716_NAME=`media-ctl -d $media_id -p -e "$MAX96717_NAME"| grep max96716 | cut -d "\"-f 2`
max96716_pad=j `media-ctl -d $media_id -p -e "$MAX96717_name"| grep max96716 | cut -d:-f 2 | awk '{print 1美元}'`

csi_bridge_name`media-ctl -d $media_id -p -e "$MAX96716_name"| grep csi-bridge | cut -d "\"-f 2`

CSI2RX_NAME=`media-ctl -d $media_id -p -e "$csi_bridge_name"| grep "ticsi2rx\"| cut -d "\"-f 2`

CSI2RX_CONTENT_NAME="$CSI2RX_NAME Context $MAX96716_PAD"

如果["$MAX96716_FMT_STR"!="["];则
MAX96716_FMT_STR="${MAX96716_FMT_STR}、"
CSI2RX_FMT_STR="${CSI2RX_FMT_STR}、"
和数据
MAX96716_FMT_STR="${MAX96716_FMT_STR}${MAX96716_PAD}/0 ->$(($MAX96716_PAD + 2))/0 [1]"
CSI2RX_FMT_STR="${CSI2RX_FMT_STR}0/${MAX96716_PAD}->$(($MAX96716_PAD+1))/0 [1]"

回声"OV2311摄像头$I 检测到"
echo " device ="`media-ctl -d $media_id -p -e "$CSI2RX_CONTENT_NAME"| grep video | awk '{print 4美元}'`
ECHO "名称= ov2311"
ECHO "格式=$OV2311_CAM_FMT"
ECHO " subdev_id =$CAM_SUBDEV"
回显"ISP_Required = yes"
回显"LDC_REQUIRED = NO"

((I++))
已完成

MAX96716_FMT_STR="${MAX96716_FMT_STR}]"
CSI2RX_FMT_STR="${CSI2RX_FMT_STR}]"

media-ctl -d $media_id -p | grep entity | grep ov2311_mipi -q
如果["$" ="0"];然后
# MAX96716路由和格式
echo $MAX96716_NAME $MAX96716_FMT_STR
media-ctl -d $media_id -R "'$MAX96716_NAME'$MAX96716_FMT_STR"
在`media-ctl -d $media_id -p | grep entity | grep ov2311_mipi | cut -d ''-f 5`;do 中输入名称
MAX96717_NAME=`media-ctl -d $media_id -p -e "ov2311_mipi $NAME"| grep max96717 | cut -d "\"-f 2`
MAX96716_NAME=`media-ctl -d $media_id -p -e "$MAX96717_NAME"| grep max96716 | cut -d "\"-f 2`
max96716_pad=j `media-ctl -d $media_id -p -e "$MAX96717_name"| grep max96716 | cut -d:-f 2 | awk '{print 1美元}'`
media-ctl -d $media_id -V "'$MAX96716_name':$MAX96716_pad $OV2311_CAM_FMT"
已完成

# CSI2RX 路由
media-ctl -d $media_id -R "'$CSI2RX_NAME'$CSI2RX_FMT_STR"
和数据
已完成
}

#setup_isx021
Setup_ov2311

```μ s

这里是 media-ctl -p 输出:

```μ s

root@MYD-am62x:~# media-ctl -p
媒体控制器 API 版本6.1.46

媒体设备信息
----------------------------
驱动器 j721e-csi2rx
模型 TI-CSI2RX
串行
总线信息平台:30102000.ticsi2rx
硬件修订版本0x1
驱动程序版本6.1.46

器件拓扑
-实体1: 30102000.ticsi2rx (5个电极, 5个链路, 1条路由)
键入 V4L2 subdev 子类型未知标志0
器件节点名称/dev/v4l-subdev0
路线:
0/0 ->1/0 [活动]
pad0:水槽
[stream:0 fmt:UYVY8_1x16/640x480字段:无色空间:sRGB xfer:sRGB YCbCr:601量化:lim-range]
<-"cdns_csi2rx.30101000.csi-bridge":1 [已启用、不可更改]
pad1:来源
[stream:0 fmt:UYVY8_1x16/640x480字段:无色空间:sRGB xfer:sRGB YCbCr:601量化:lim-range]
->"30102000.ticsi2rx 上下文0":0 [已启用、不可更改]
pad2:来源
->"30102000.ticsi2rx 上下文1":0 [已启用、不可更改]
pad3:来源
->"30102000.ticsi2rx 上下文2":0 [已启用、不可更改]
pad4:来源
->"30102000.ticsi2rx 上下文3":0 [已启用、不可更改]

-实体7:cdns_csi2rx.30101000.csi-bridge (5个电极、2个链路、1条路由)
键入 V4L2 subdev 子类型未知标志0
器件节点名称/dev/v4l-subdev1
路线:
0/0 ->1/0 [活动]
pad0:水槽
[stream:0 fmt:UYVY8_1x16/640x480字段:无色空间:sRGB xfer:sRGB YCbCr:601量化:lim-range]
<-"max96716 1-004C":2 [已启用、不可更改]
pad1:来源
[stream:0 fmt:UYVY8_1x16/640x480字段:无色空间:sRGB xfer:sRGB YCbCr:601量化:lim-range]
->"30102000.ticsi2rx":0 [已启用、不可更改]
pad2:来源
pad3:来源
pad4:来源

-实体13:max96716 1-004C (4个电极、2个链路、1条路由)
键入 V4L2 subdev 子类型未知标志0
器件节点名称/dev/v4l-subdev2
路线:
0/0 ->2/0 [活动]
pad0:水槽
[流:0 fmt:Y8_1X8/1280x800]
<-"max96717 1-0040":1 [已启用、不可更改]
pad1:水槽
pad2:来源
[流:0 fmt:Y8_1X8/1280x800]
->"Cdns_csi2rx.30101000.csi-bridge":0 [已启用、不可更改]
pad3:来源

-实体20:max96717 1-0040 (2个电极、2个链路、1条路由)
键入 V4L2 subdev 子类型未知标志0
器件节点名称/dev/v4l-subdev3
路线:
0/0 ->1/0 [活动]
pad0:水槽
[流:0 fmt:Y8_1X8/1280x800]
<-"ov2311_mipi 1-0010":0 [已启用、不可更改]
pad1:来源
[流:0 fmt:Y8_1X8/1280x800]
->"max96716 1-004C":0 [已启用、不可更改]

实体25:ov2311_mipi 1-0010 (1个 PAD、1个链接、0个路由)
键入 V4L2 subdev 子类型传感器标志0
器件节点名称/dev/v4l-subdev4
pad0:来源
[STREAM:0 fmt:Y8_1X8/1280x800字段:无色空间:sRGB]
->"max96717 1-0040":0 [已启用、不可更改]

-实体31: 30102000.ticsi2rx 上下文0 (一个键盘,一个链路, 0路由)
键入节点子类型 V4L 标志0
器件节点名称/dev/video0
pad0:水槽
<-"30102000.ticsi2rx":1 [已启用、不可更改]

-实体37: 30102000.ticsi2rx 上下文1 (一个键盘,一个链路, 0路由)
键入节点子类型 V4L 标志0
器件节点名称/dev/video1
pad0:水槽
<-"30102000.ticsi2rx":2 [已启用、不可更改]

-实体43: 30102000.ticsi2rx 上下文2 (一个键盘,一个链接, 0路由)
键入节点子类型 V4L 标志0
器件节点名称/dev/video2
pad0:水槽
<-"30102000.ticsi2rx":3 [已启用、不可更改]

-实体49: 30102000.ticsi2rx 上下文3 (一个键盘,一个链路, 0路由)
键入节点子类型 V4L 标志0
器件节点名称/dev/video3
pad0:水槽
<-"30102000.ticsi2rx":4 [已启用、不可更改]

```μ s

当我尝试获得一个流,使用下面的代码我得到一个错误:

root@MYD-am62x:~# v4l2-ctl --device /dev/video0 --set-fmt-video=width=1280、height=800、pixelformat=BA81 --stream-mmap --stream-to=frame.raw --stream-count=1
VIDIOC_STREAMON 返回-1 (管道断裂)

我的 media-ctl 脚本出错了吗? 或者此问题更像是与驱动程序相关的问题?  

谢谢。

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

    您好、  

    该域名专家目前不在办公室。 请预计响应时间会有所延迟。

    谢谢、
    Shreyansh

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

    尊敬的 Kya:

    "media-ctl -p"输出中的两个实体显示了不同的格式: 30102000.ticsi2rx 和 cdns_csi2rx.30101000.csi-bridge。 这就是为什么会出现"管道断裂"错误的原因。

    您需要将这些实体配置为具有相同的格式: Y8_1X8/1280x800。

    此致、

    建中

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

    徐建忠:

    我注意到、并添加了以下命令:

        media-ctl -d 0 -R '"cdns_csi2rx.30101000.csi-bridge" [0/0 -> 1/0 [1]]'
        media-ctl -d 0 -V '"cdns_csi2rx.30101000.csi-bridge":0/0 [fmt:Y8_1X8/1280x800 field:none colorspace:srgb]'
        media-ctl -d 0 -R '"30102000.ticsi2rx" [0/0 -> 1/0 [1]]'
        media-ctl -d 0 -V '"30102000.ticsi2rx":0/0 [fmt:Y8_1X8/1280x800 field:none colorspace:srgb]'
    

    这里是 media-ctl -p 输出:

    root@myd-am62x:~# media-ctl -p
    Media controller API version 6.1.46
    
    Media device information
    ------------------------
    driver          j721e-csi2rx
    model           TI-CSI2RX
    serial          
    bus info        platform:30102000.ticsi2rx
    hw revision     0x1
    driver version  6.1.46
    
    Device topology
    - entity 1: 30102000.ticsi2rx (5 pads, 5 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:Y8_1X8/1280x800 field:none colorspace:srgb]
    		<- "cdns_csi2rx.30101000.csi-bridge":1 [ENABLED,IMMUTABLE]
    	pad1: Source
    		[stream:0 fmt:Y8_1X8/1280x800 field:none colorspace:srgb]
    		-> "30102000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
    	pad2: Source
    		-> "30102000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
    	pad3: Source
    		-> "30102000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
    	pad4: Source
    		-> "30102000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]
    
    - entity 7: cdns_csi2rx.30101000.csi-bridge (5 pads, 2 links, 1 route)
                type V4L2 subdev subtype Unknown flags 0
                device node name /dev/v4l-subdev1
    	routes:
    		0/0 -> 1/0 [ACTIVE]
    	pad0: Sink
    		[stream:0 fmt:Y8_1X8/1280x800 field:none colorspace:srgb]
    		<- "max96716 1-004c":2 [ENABLED,IMMUTABLE]
    	pad1: Source
    		[stream:0 fmt:Y8_1X8/1280x800 field:none colorspace:srgb]
    		-> "30102000.ticsi2rx":0 [ENABLED,IMMUTABLE]
    	pad2: Source
    	pad3: Source
    	pad4: Source
    
    - entity 13: max96716 1-004c (4 pads, 2 links, 1 route)
                 type V4L2 subdev subtype Unknown flags 0
                 device node name /dev/v4l-subdev2
    	routes:
    		0/0 -> 2/0 [ACTIVE]
    	pad0: Sink
    		[stream:0 fmt:Y8_1X8/1280x800 field:none]
    		<- "max96717 1-0040":1 [ENABLED,IMMUTABLE]
    	pad1: Sink
    	pad2: Source
    		[stream:0 fmt:Y8_1X8/1280x800 field:none]
    		-> "cdns_csi2rx.30101000.csi-bridge":0 [ENABLED,IMMUTABLE]
    	pad3: Source
    
    - entity 20: max96717 1-0040 (2 pads, 2 links, 1 route)
                 type V4L2 subdev subtype Unknown flags 0
                 device node name /dev/v4l-subdev3
    	routes:
    		0/0 -> 1/0 [ACTIVE]
    	pad0: Sink
    		[stream:0 fmt:Y8_1X8/1280x800 field:none]
    		<- "ov2311_mipi 1-0010":0 [ENABLED,IMMUTABLE]
    	pad1: Source
    		[stream:0 fmt:Y8_1X8/1280x800 field:none]
    		-> "max96716 1-004c":0 [ENABLED,IMMUTABLE]
    
    - entity 25: ov2311_mipi 1-0010 (1 pad, 1 link, 0 route)
                 type V4L2 subdev subtype Sensor flags 0
                 device node name /dev/v4l-subdev4
    	pad0: Source
    		[stream:0 fmt:Y8_1X8/1280x800 field:none colorspace:srgb]
    		-> "max96717 1-0040":0 [ENABLED,IMMUTABLE]
    
    - entity 31: 30102000.ticsi2rx context 0 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video0
    	pad0: Sink
    		<- "30102000.ticsi2rx":1 [ENABLED,IMMUTABLE]
    
    - entity 37: 30102000.ticsi2rx context 1 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video1
    	pad0: Sink
    		<- "30102000.ticsi2rx":2 [ENABLED,IMMUTABLE]
    
    - entity 43: 30102000.ticsi2rx context 2 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video2
    	pad0: Sink
    		<- "30102000.ticsi2rx":3 [ENABLED,IMMUTABLE]
    
    - entity 49: 30102000.ticsi2rx context 3 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video3
    	pad0: Sink
    		<- "30102000.ticsi2rx":4 [ENABLED,IMMUTABLE]
    

    但是、当我尝试从我的摄像头获取流时、会出现以下错误:

    root@myd-am62x:~# v4l2-ctl --device /dev/video0 --set-fmt-video=width=1280,height=800,pixelformat=GREY --stream-mmap --stream-to=frame.raw --stream-count=1
    		VIDIOC_STREAMON returned -1 (Invalid argument)
    

    在 dmesg 中、我收到以下错误:

    [69775.626762] max96716 1-004C:将接收端0/0映射到输出 VC 0
    [69775.632694] cdns-csi2rx 30101000.csi-bridge:无法配置外部 DPHY:-22

    有什么想法为什么会发生这种情况?

    谢谢。

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

    您使用的是哪个 SDK 版本?

    您可以共享"uname -A"的日志吗?

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

    徐建忠

    root@MYD-am62x:~# uname -r
    6.1.46-g422823f39974-dirty

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

    徐建忠:

    我的器件树上有一个拼写错误、因此链路频率没有传递到解串器 max96716。 现在它修复了,但我有另一个问题:

    [ 37.510811] ov2311_mipi 1-0010:未设置活动格式、使用默认值
    [ 37.517190] max96716 1-004C:max96716_GET_VC_MAPS:端口0的 VC 映射为0x00
    [ 37.524260] ov2311_mipi 1-0010:未设置活动格式、使用默认值
    [ 37.530673] max96716 1-004C:将接收端0/0映射到输出 VC 0
    [ 37.537126] max96716 1-004C:准备流式传输
    [ 37.542075] ov2311_mipi 1-0010:未设置活动格式、使用默认值
    [ 37.548469] max96716 1-004C:max96716_GET_VC_MAPS:端口0的 VC 映射为0x00
    [ 37.5556] cdns-csi2rx 30101000.csi-bridge:无法启动子开发上的流0x1

    现在我认为它是 tryes 开始流为错误的子开发不知何故? 我该如何解决这个问题?

    谢谢。

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

    您好:

    root@MYD-am62x:~# uname -r
    6.1.46-g422823f39974-dirty

    6.1.46内核(在 SDK 9.1中)在 CSI Rx 驱动程序 https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c?h=ti-linux-6.1.y#n138中不支持 Y8_1X8格式

    请升级到支持 Y8_1X8的 SDK 10.1: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c?h=ti-linux-6.6.y#n188

    此致、

    建中