Line 72: |
Line 72: |
| * dts源码 | | * dts源码 |
| | | |
| + | ==== 烧写飞凌官方标准系统 ==== |
| + | 参考《OKMX8MPQ-C_Linux5.4.70+Qt5.15.0用户使用手册_V1.2_20230406.pdf》,烧写飞凌嵌入式标准版本系统。 |
| | | |
− | <br /> | + | ==== 使用编译好的Image和dtb ==== |
| + | OKMX8MPQ-C板子的Image和dtb文件,保存在emmc的FAT分区,系统启动后,自动挂载到/run/media/mmcblk2p1目录。 |
| + | |
| + | 在HostPC: |
| + | |
| + | <code>git clone <nowiki>https://github.com/veyeimaging/forlinx_nxp_i.mx.git</nowiki></code> |
| + | |
| + | 解压kernel Image,将Image和dtb文件拷贝到MYD-JX8MX板子上。 |
| + | |
| + | <code>cp <your path>/Image /run/media/mmcblk2p1/</code> |
| + | |
| + | <code>cp <your path>/OK8MP-C.dtb /run/media/mmcblk2p1/</code> |
| + | |
| + | 重启板子即可。 |
| + | |
| + | === 应用和测试 === |
| + | |
| + | ===== 系统状态检测 ===== |
| + | 完成系统安装后,在OKMX8MPQ-C板端执行以下命令来检测是否正确连接摄像头。 |
| + | |
| + | * VEYE-MIPI-IMX327S,VEYE-MIPI-IMX462,VEYE-MIPI-IMX385 |
| + | |
| + | <code>dmesg | grep veye</code> |
| + | |
| + | 应当有类似如下提示: |
| + | |
| + | <code>[ 2.806555] veyecam2m 1-003b: camera id is veyecam2m</code> |
| + | |
| + | <code>[ 2.816868] veyecam2m 1-003b: sensor is IMX327</code> |
| + | |
| + | <code>[ 2.821323] veyecam2m 1-003b: board type is ONE board</code> |
| + | |
| + | <code>[ 2.826981] veyecam2m 1-003b: veyecam2m camera probed</code> |
| + | |
| + | <code>[ 6.055710] mx8-img-md: Registered sensor subdevice: veyecam2m 1-003b (1)</code> |
| + | |
| + | <code>[ 6.150181] mx8-img-md: created link [veyecam2m 1-003b] => [mxc-mipi-csi2.1]</code> |
| + | |
| + | 可以看到在i2c-1上识别到了VEYE-MIPI-IMX327S。 |
| + | |
| + | 正确识别摄像头后,会生成/dev/video0设备节点。 |
| + | |
| + | * 列出摄像头支持的数据格式 |
| + | |
| + | <code>v4l2-ctl --list-formats-ext -d /dev/video0</code> |
| + | |
| + | <code>ioctl: VIDIOC_ENUM_FMT</code> |
| + | |
| + | <code> Type: Video Capture Multiplanar</code> |
| + | |
| + | <code> [0]: 'RGBP' (16-bit RGB 5-6-5)</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | <code> [1]: 'RGB3' (24-bit RGB 8-8-8)</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | <code> [2]: 'BGR3' (24-bit BGR 8-8-8)</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | <code> [3]: 'YUYV' (YUYV 4:2:2)</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | <code> [4]: 'YUV4' (32-bit A/XYUV 8-8-8-8)</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | <code> [5]: 'NV12' (Y/CbCr 4:2:0)</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | <code> [6]: 'YM24' (Planar YUV 4:4:4 (N-C))</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | <code> [7]: 'XR24' (32-bit BGRX 8-8-8-8)</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | <code> [8]: 'AR24' (32-bit BGRA 8-8-8-8)</code> |
| + | |
| + | <code> Size: Discrete 1920x1080</code> |
| + | |
| + | 事实上,该摄像头仅提供 UYVY 数据格式,而 i.MX 8M Plus 中的 ISI 模块提供了数据格式转换功能,因此 /dev/video0 有这么多的输出格式。 |
| + | |
| + | === 视频流测试 === |
| + | |
| + | ==== 视频预览 (VEYE-MIPI-CAM@1080p mode) ==== |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=1920, height=1080,framerate=30/1 ! autovideosink -v</code> |
| + | |
| + | or |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, format=NV12, width=1920, height=1080,framerate=30/1 ! imxvideoconvert_g2d ! queue ! video/x-raw, format=RGB16, width=1920, height=1080 ! waylandsink</code> |
| + | ====抓拍一张图片 (VEYE-MIPI-CAM@1080p mode)==== |
| + | <code>gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video0 ! 'video/x-raw, width=1920,height=1080' ! jpegenc ! filesink location=test_image.jpg</code> |
| + | |
| + | ==== v4l2grab抓拍一张图片(VEYE-MIPI-CAM@1080p mode) ==== |
| + | <code>./v4l2grab -d /dev/video0 -W 1920 -H 1080 -I 30 -o picture.jpg</code> |
| + | |
| + | ===I2C脚本=== |
| + | 由于我们的摄像头参数自由度比较高,并没有采用V4L2参数进行控制,而是使用脚本进行参数配置。 |
| + | |
| + | https://github.com/veyeimaging/nxp_i.mx_veye_bsp/tree/main/i2c_cmd |
| + | |
| + | 注意脚本使用中,采用-b [i2cbus]参数来指明操作的是哪个摄像头。对于OKMX8MPQ-C,应当使用 -b 1。 |
| + | |
| + | [http://wiki.veye.cc/index.php/VEYE_MIPI_290/327_for_Raspberry_Pi/zh#.E8.A7.86.E9.A2.91.E6.8E.A7.E5.88.B6.E8.BD.AF.E4.BB.B6.E5.8C.85.E4.BD.BF.E7.94.A8 VEYE系列参数控制软件包使用说明] |
| + | |
| + | === 驱动的源代码编译 === |
| + | 以下操作均在ubuntu Host PC上进行。 |
| + | |
| + | =====准备编译环境===== |
| + | 参考官方文档《OKMX8MPQ-C_Linux5.4.70+Qt5.15.0用户编译手册_V1.2_20230406.pdf》,部署开发环境。 |
| + | |
| + | ==== 编译飞凌标准版本 ==== |
| + | 参考上述文档,编译标准版本。 |
| + | |
| + | ====patch我们的代码==== |
| + | |
| + | *Driver source code |
| + | |
| + | <code>git clone <nowiki>https://github.com/veyeimaging/nxp_i.mx_veye_bsp.git</nowiki></code> |
| + | |
| + | camera驱动源码路径为: linux/drivers/media/platform/mxc/capture,将camera驱动的源码放到对应目录。 |
| + | |
| + | *Modify the the Makefile and Kconfig files |
| + | |
| + | 修改同路径下的Config和Makefile,增加对应camera驱动。 |
| + | |
| + | *dts file |
| + | |
| + | <code>git clone <nowiki>https://github.com/veyeimaging/forlinx_nxp_i.mx.git</nowiki></code> |
| + | |
| + | dts文件路径为:linux/arch/arm64/boot/dts/freescale,将dts文件放到此路径。 |
| + | ====增加编译选项==== |
| + | <code>make menuconfig</code> |
| + | |
| + | 增加对应camera模块驱动的编译选项,路径为 ''> Device Drivers > Multimedia support > I2C Encoders, decoders, sensors and other helper chips.'' |
| + | ====编译输出==== |
| + | 参考官方文档,编译输出得到Image和dtb。 |