这几天帮一个客户启用LVDS功能。片内外部LVDS与i.MX6 CSI之间的数据格式为RGB565,提供HSYNC、VSYNC信号。因此我们对 i.MX6 CSI 采用门控模式配置。
客户环境:i.MX6 D + Linux LTIB 4.0.0BSP
默认情况下,Linux LTIB 4.0.0 不支持 RGB565 门控模式V4L2 捕获驱动程序,这里总结了我们需要对驱动程序进行哪些更改以支持 RGB565 门控模式。
开关(f->fmt.pix.pixelformat){
............................................................................
案例 V4L2_PIX_FMT_SGRBG8:
尺寸 = f->fmt.pix.宽度 * f->fmt.pix.高度 * 2;
bytesperline = f->fmt.pix.width * 2;
break;
默认:
break;
}
对于文件linux-3.0.35/drivers/media/video/mxc/capture/ipu_csi_enc.c,函数csi_enc_setup(),请添加代码段:
否则,如果(cam->v2f.fmt.pix.pixelformat == V4L2_PIX_FMT_SGRBG8)
pixel_fmt = IPU_PIX_FMT_GENERIC_16;
通过上述修改,可以为CSI IDMAC通道设置IPU_PIX_FMT_GENERIC_16。
csi_param.clk_mode = IPU_CSI_CLK_MODE_GATED_CLK;
csi_param.data_width = IPU_CSI_DATA_WIDTH_16;
关键点在于,对于CSI RGB565门控模式支持,IDMAC通道的像素格式应设置为GENERIC 16,而对于CSI端口配置,像素格式为BAYER模式。
与那些与 Hyeran 和我一样遇到同样问题的人分享我的经验,如下所示:
1. 将 mfw_v4lsrc 元素默认颜色格式从 V4L2_PIX_FMT_YUV420 更改为 V4L2_PIX_FMT_SGRBG8
2. 将 mfw_v4lsrc 元素默认大小写从 video/x-raw-yuv 更改为 video/x-raw-rgb,默认 fourcc 代码从 'I' '4' '2' '0' 更改为 'R' 'G' 'B' 'P'
3. 完成这些更改后,运行管道以显示在屏幕上,如下所示:
gst启动mfw_v4lsrc设备=/dev/video0捕获模式=4!mfw_v4lsink 设备=/dev/video16 同步=false
谢谢您!
Hi Hyeran & huang:
我遇到了和你类似的问题,我运行 gstreamer 管道来获取捕获结果并显示在屏幕上,管道如下:
gst启动mfw_v4lsrc设备=/dev/video0捕获模式=4!mfw_v4lsink 设备=/dev/video16 同步=false
您能给我一些关于如何修复它的建议吗?谢谢
Hi Hyeran.
你的问题解决了吗?
亲爱的朱骏。
我的环境是“i.MX 6D + ov5642并行摄像头”
我应用了您的上述修改,包括补丁。
但叠加预览图像不正常。它的预览图像确实是绿色的(当然,我可以看到轮廓)并且有 4 帧而不是 1 帧。(和滚动)
还有什么地方需要修改吗?
并且,我对您的修改还有其他问题。
对于传感器驱动程序,您提到的是将像素格式更改为IPU_PIX_FMT_GENERC_16。以我拙见,它应该是 V4L2_PIX_FMT_SGRBG8,而不是 IPU_PIX_FMT_GENERIC_16。
请分享您的意见。
谢谢!
BRs。
jessie.lee