工具/软件:
大家好:
我通过参考 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 脚本出错了吗? 或者此问题更像是与驱动程序相关的问题?
谢谢。