NXP MCU 技术william hill官网
直播中

陈游斗

7年用户 1109经验值
擅长:控制/MCU
私信 关注
[问答]

使用带有通过MIPI/CSI-2接收器连接到ADV7282a-m的Dart-MX6报错怎么解决?

我正在使用带有通过 MIPI/CSI-2 接收器连接到 ADV7282a-m 的 Dart-MX6(内核 4.9.88,fsl-image-gui)的定制板。这个想法是尝试显示彩条模式来测试视频,使用 IPU1 的 CSI1 将虚拟通道设置为 1。但我总是在尝试捕获视频时遇到错误 VIDIOC_DQBUF。


与 ADV7282a-m 的驱动程序和 i2c 通信似乎工作正常(我正在使用
root@var-som-mx6:~# i2cdetect -y -r 0
0
1个
2个
3个
4个
5个
6个
7
8个
9
A
b
C
d
电子
F
00
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
10
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
20
单位
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
30
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
40
--
--
单位
--
单位
--
--
--
--
--
--
--
--
--
--
--
50
单位
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
60
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
70
--
--
--
--
--
--
--
--

系统显示探测到ADV7282的驱动(查看dmesg.txt文件)
所以我们在开始时设置“Color Bars 576i MIPI Out with free-run”配置:
adv7282_write_reg:write @0x0f=0x00 退出掉电模式
adv7282_write_reg:write @0x00=0x04 ADI 要求写入
adv7282_write_reg:write @0x0c=0x37 强制自由运行模式
adv7282_write_reg:write @0x02=0x84 强制标准为 PAL
adv7282_write_reg:write @0x14=0x11 将自由运行模式设置为彩条
adv7282_write_reg:write @0x03=0x4e ADI 要求写入
adv7282_write_reg:write @0x04=0x57 上电 INTRQ 引脚
adv7282_write_reg:write @0x13=0x00 使能 INTRQ 输出驱动
adv7282_write_reg:write @0x17=0x41 选择SH1
adv7282_write_reg:write @0x1d=0xc0 三态 LLC 输出驱动器
adv7282_write_reg:write @0x52=0xcd ADI 要求写入
adv7282_write_reg:write @0x80=0x51 ADI 要求写入
adv7282_write_reg:write @0x81=0x51 ADI 要求写入
adv7282_write_reg:write @0x82=0x68 ADI 要求写入
adv7282_write_reg:write @0x5d=0x1c 启用诊断引脚 1 - Level=1.125V
adv7282_write_reg:write @0x5e=0x1c 启用诊断引脚 2 - Level=1.125V
adv7282_write_reg:write @0xfd=0x84 设置VPP映射地址
adv7282_write_reg:write @0xfe=0x88 设置CSI映射地址
adv7282_csi_write:csi_write @0x0d=0x40 程序虚拟通道#1
adv7282_vpp_write:vpp_write @0xa3=0x00 ADI 要求写入
adv7282_vpp_write:vpp_write @0x5b=0x00 I2C_DEINT_ENABLE:启用高级时序
adv7282_vpp_write:vpp_write @0x55=0x80 ADV_tiMING_MODE_EN:启用 I2P/启用 I2P 去隔行器
adv7282_csi_write:csi_write @0xde=0x02 DPHY_PWDN_CTL:给 MIPI D-PHY 上电
adv7282_csi_write:csi_write @0xd2=0xf7 ADI 要求写入
adv7282_csi_write:csi_write @0xd8=0x65 ADI 要求写入
adv7282_csi_write:csi_write @0xe0=0x09 ADI 要求写入
adv7282_csi_write:csi_write @0x2c=0x00 ADI 要求写入
adv7282_csi_write:csi_write @0x00=0x00 启动 MIPI CSI-2

您可以查看设备树(检查 imx6qdl-var-dart .dtsi)
有关 video0 的信息在系统中定义:
root@var-som-mx6:~# v4l2-ctl --device /dev/video0 --all
驱动程序信息(不使用 libv4l2):
                    驱动名称:mxc_v4l2
                    卡的种类    :
                    巴士信息:
                    驱动版本:0.1.11
                    能力:0x05000005
                                         视频截取
                                         视频叠加
                                         读/写
                                         串流
视频输入:0(CSI IC MEM:正常)
视频输出:0(DISP3 BG)
视频标准 = 0x00ffffff
                    PAL-B/B1/G/H/I/D/D1/K/M/N/Nc/60
                    NTSC-M/M-JP/443/M-KR
                    SECAM-B/D/G/H/K/K1/L/Lc
格式化视频捕获:
                    宽度/高度:288/352
                    像素格式:'YU12'
                    字段:任何
                    每行字节数:432
                    尺寸图片 : 152064
                    色彩空间:默认
                    传递函数:默认
                    YCbCr/HSV 编码:默认
                    量化:默认
格式视频叠加:
                    左/上:0/0
                    宽度/高度:160/160
                    字段:任何
                    色度键:0x00000000
                    全球阿尔法:0x00
                    剪辑数:0
                    剪辑位图:否
帧缓冲区格式:
                    能力:外部覆盖
                    标志:覆盖匹配捕获/输出大小
                    宽度 : 0
                    高度 : 0
                    像素格式:''
作物能力视频捕捉:
                    边界:左 0,上 0,宽度 720,高度 625
                    默认值:左侧 0,顶部 0,宽度 720,高度 625
                    像素长宽比:0/0
裁剪:左侧 0,顶部 0,宽度 720,高度 576
流参数视频捕获:
                    每秒帧数:30.000 (30/1)
                    读取缓冲区:0
流媒体参数视频输出:
                    每秒帧数:无效 (0/0)
                    写缓冲区:0

我使用 gstreamer 捕获视频,但出现错误 VIDIOC_DQBUF:
root@var-som-mx6:~# GST_DEBUG=3 gst-launch-1.0 imxv4l2videosrc 输入=0!imxipu视频转换!队列 !imxg2dvideosink async=false sync=false
将管道设置为 PAUSED ...
0:00:01.948636667 831 0x14a0160 警告 imxv4l2videosrc v4l2src.c:124:gst_imx_v4l2src_is_tvin: VIDIOC_QUERYSTD 失败:参数无效
管道是实时的,不需要 PREROLL ...
将管道设置为 PLAYING ...
新时钟:GstSystemClock
0:00:14.441503668 831 0x1490c30 错误 imxv4l2bufferpool v4l2_buffer_pool.c:275:gst_imx_v4l2_buffer_pool_acquire_buffer: VIDIOC_DQBUF 失败:计时器过期
0:00:14.441826002 831 0x1490c30 WARN basesrc gstbasesrc.c:2939:gst_base_src_loop: 错误:内部数据流错误。
0:00:14.441987002 831 0x1490c30 WARN basesrc gstbasesrc.c:2939:gst_base_src_loop: 错误:流媒体停止,原因错误 (-5)
错误:来自元素 /GstPipeline:pipeline0/GstImxV4l2VideoSrc:imxv4l2videosrc0:内部数据流错误。
附加调试信息:
../../../../gstreamer-1.12.4/libs/gst/base/gstbasesrc.c(2939): gst_base_src_loop (): /GstPipeline:pipeline0/GstImxV4l2VideoSrc:imxv4l2videosrc0:
流媒体停止,原因错误 (-5)
执行在 0:00:10.954862668 之后结束
将管道设置为 PAUSED ...
将管道设置为 READY ...
将管道设置为 NULL ...
释放管道...

启动 gstreamer 时系统的输出可以在文件 dmesg_gstreamer.txt 中找到
在这里,您可以在播放 gstreaming 的管道时看到 iMX6 的一些寄存器:
内存映射名称
绝对地址
价值
IPU_CONF
0x02600000
0xA0000006
IPU_INT_CTRL_1
0x0260003C
0x00100000
IPU_INT_STAT_1
0x02600200
0x0
IPU1_CSI1_SENS_CONF
0x02638000
0x02000A00
IPU1_CSI1_SENS_FRM_SIZE
0x02638004
0x027002CF
IPU1_CSI1_ACT_FRM_SIZE
0x02638008
0x023F02CF
IPU1_CSI1_DI
0x02638020
0XFFFFFF1E
CSI2IPU
0x021DCF00
0x0

我也尝试使用 mxc_v4l2 测试,但得到了同样的错误:
root@var-som-mx6:~# /unit_tests/V4L2/mxc_v4l2_tvin.out -720 -ih 576 -ow 720 -oh 576 -fr 30 -m 1

---- 运行 < /unit_tests/V4L2/mxc_v4l2_tvin.out > 测试 ----

电视解码芯片是adv7282-m_decoder
驱动程序=mxc_vout,卡=DISP4 FG,总线=,版本=0x00040958,功能=0x84200002
fmt 16 位 RGB 5-6-5:fourcc = 0x50424752
fmt 24 位 BGR 8-8-8:fourcc = 0x33524742
fmt 24 位 RGB 8-8-8:fourcc = 0x33424752
fmt 32 位 A/XRGB 8-8-8-8:fourcc = 0x34424752
fmt 32 位 BGRA/X 8-8-8-8:fourcc = 0x34524742
fmt Y/CbCr 4:2:0: fourcc = 0x3231564e
fmt UYVY 4:2:2: fourcc = 0x59565955
fmt YUYV 4:2:2: fourcc = 0x56595559
fmt 平面 YUV 4:2:2: fourcc = 0x50323234
fmt 16 位 A/XYUV 4-4-4-4:fourcc = 0x34343459
fmt 平面 YUV 4:2:0: fourcc = 0x32315559
fmt 平面 YVU 4:2:0: fourcc = 0x32315659
fmt 平铺 NV12P:fourcc = 0x50564e54
fmt TILED NV12F:fourcc = 0x46564e54
fmt YUV444 平面:fourcc = 0x50343434
开始时间 = 1681476766 s, 327261 us
VIDIOC_DQBUF 失败。
---- 测试 < /unit_tests/V4L2/mxc_v4l2_tvin.out > 结束 ----

有人可以帮我找出我缺少的东西或我做错了什么吗?

更多回帖

发帖
×
20
完善资料,
赚取积分