Line 1: |
Line 1: |
| [[VEYE CS Camera on MYIR i.MX8 board|English]] | | [[VEYE CS Camera on MYIR i.MX8 board|English]] |
| + | |
| + | '''<big>如何在米尔科技i.MX8m板子上使用VEYE系列和CS系列摄像头模组</big>''' |
| + | |
| + | === 概述 === |
| + | 米尔科技MYD-JX8MX开发板采用i.MX8M处理器,MYD-C8MMX采用了i.MX 8M Mini处理器。 |
| + | |
| + | 在米尔官方资料(L4.19.35版本)基础上,增加了我们的摄像头模组驱动,并提供了一些应用层的例程。 |
| + | |
| + | 一般情况下,只需使用我们已编译好的Image和dtb。当然,你也可以根据我们开源的代码修改或重新编译驱动。 |
| + | |
| + | ==== 支持的模组: ==== |
| + | {| class="wikitable" |
| + | |+模组型号支持表 |
| + | !系列 |
| + | !型号 |
| + | !状态 |
| + | !转接板 |
| + | |- |
| + | |VEYE系列 |
| + | |VEYE-MIPI-IMX327S |
| + | |完成 |
| + | |ADP-MYiR |
| + | |- |
| + | |VEYE系列 |
| + | |VEYE-MIPI-IMX385 |
| + | |完成 |
| + | |ADP-MYiR |
| + | |- |
| + | |VEYE系列 |
| + | |VEYE-MIPI-IMX462 |
| + | |完成 |
| + | |ADP-MYiR |
| + | |- |
| + | |CS系列 |
| + | |CS-MIPI-IMX307 |
| + | |完成 |
| + | |ADP-MYiR |
| + | |- |
| + | |CS系列 |
| + | |CS-MIPI-SC132 |
| + | |完成 |
| + | |ADP-MYiR |
| + | |} |
| + | VEYE系列和CS系列MIPI摄像头模组是内置ISP的,输出为MIPI-CSI2接口。 |
| + | |
| + | 对于图像效果参数,我们并没有采用V4L2接口实现,而是采用了DRA(Directly Register Access)模式,我们提供了一组Shell脚本直接控制摄像头模组。 |
| + | |
| + | 特殊的,在这个i.MX平台上,默认驱动将摄像头配置为YUYV格式。 |
| + | |
| + | === 硬件准备及安装 === |
| + | 使用 [[ADP-MYiR Adapter Board for MYiR-tech|ADP-MYiR]] 接入到 MYD-J8XMX 主板。 |
| + | [[File:MYiR-MYD-J8XMX connection .jpg|alt=米尔科技MYD-J8XMX连接图(整体图)|center|thumb|800x800px|米尔科技MYD-J8XMX连接图(整体图)]] |
| + | [[File:MYiR MYD-JX8MX connection details.jpg|alt=米尔科技MYD-J8XMX连接细节图|center|thumb|800x800px|米尔科技MYD-J8XMX连接细节图]] |
| + | <br /> |
| + | |
| + | === 更新MYD-JX8MX系统 === |
| + | |
| + | ===== 概述 ===== |
| + | 本章节描述怎样更新MYD-JX8MX系统以支持我们的摄像头模组。要支持我们的摄像头模组,需要更新系统两个部分,Image和DTB。 |
| + | |
| + | Image部分,我们增加了摄像头驱动,DTB部分则指明了使用的摄像头型号。一般情况下,只需使用我们已编译好的Image和DTB,非必要情况下,无需根据代码进行编译。 |
| + | ====BSP包介绍:==== |
| + | =====i.MX平台bsp===== |
| + | https://github.com/veyeimaging/nxp_i.mx_veye_bsp |
| + | |
| + | 包括以下主要内容: |
| + | |
| + | *driver源码 |
| + | *i2c通信工具集 |
| + | *应用层demo |
| + | |
| + | ===== MYiR i.MX平台bsp ===== |
| + | https://github.com/veyeimaging/myir_nxp_i.mx |
| + | |
| + | 包括以下主要内容: |
| + | |
| + | *预编译好的linux kernel:Image |
| + | *预编译好的不同平台下的dtb |
| + | *dts源码 |
| + | |
| + | ==== 烧写米尔官方标准系统 ==== |
| + | 参考《MYD-JX8MX-Software-Manual-zh-V1.3.pdf》,烧写米尔科技标准版本系统。 |
| + | |
| + | ==== 使用编译好的Image和dtb ==== |
| + | MYD-JX8MX板子的Image和dtb文件,保存在emmc的FAT分区,系统启动后,自动挂载到/run/media/mmcblk0p1/目录。 |
| + | |
| + | 在HostPC: |
| + | |
| + | <code>git clone <nowiki>https://github.com/veyeimaging/myir_nxp_i.mx.git</nowiki></code> |
| + | |
| + | 解压kernel Image,将Image和dtb文件拷贝到MYD-JX8MX板子上。 |
| + | |
| + | <code>cp <your path>/Image /run/media/mmcblk0p1/</code> |
| + | |
| + | <code>cp <your path>/myb-fsl-imx8mq-evk-veye327.dtb /run/media/mmcblk0p1/myb-fsl-imx8mq-evk.dtb</code> |
| + | |
| + | 重启MYD-JX8MX板子即可。 |
| + | |
| + | === 应用和测试 === |
| + | |
| + | ===== 系统状态检测 ===== |
| + | 完成系统安装后,在MYD-JX8MX板端执行以下命令来检测是否正确连接摄像头。 |
| + | |
| + | *VEYE-MIPI-IMX327S |
| + | |
| + | <code>dmesg | grep veye327</code> |
| + | |
| + | 应当有类似如下提示: |
| + | |
| + | <code>camera veye327_mipi is found</code> |
| + | |
| + | <code>Registered sensor subdevice: veye327_mipi <0/1>-003b</code> |
| + | |
| + | *CS-MIPI-IMX307 |
| + | |
| + | <code>dmesg | grep csimx307</code> |
| + | |
| + | 应当有类似如下提示: |
| + | |
| + | <code>camera csimx307_mipi is found</code> |
| + | |
| + | <code>Registered sensor subdevice: csimx307_mipi <0/1>-003b</code> |
| + | |
| + | *CS-MIPI-SC132 |
| + | |
| + | <code>dmesg | grep cssc132</code> |
| + | |
| + | 应当有类似如下提示: |
| + | |
| + | <code>camera cssc132_mipi is found</code> |
| + | |
| + | <code>Registered sensor subdevice: cssc132_mipi <0/1>-003b</code> |
| + | |
| + | 正确识别摄像头之后,两个MIPI-CSI2接口的摄像头分别识别挂载到i2c-0,i2c-1,识别为/dev/video0和/dev/video1。 |
| + | ====列出摄像头支持的模式==== |
| + | <code>v4l2-ctl --list-formats-ext -d /dev/video<0/1></code> |
| + | |
| + | ===== 视频流测试 ===== |
| + | <code>export DISPLAY=:0</code> |
| + | |
| + | *视频预览(VEYE-MIPI-IMX327S,CS-MIPI-IMX307 @1080p mode) |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1920,height=1080,framerate=(fraction)30/1' ! waylandsink</code> |
| + | |
| + | *视频预览(CS-MIPI-IMX307 @1080p mode 10fps) |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1920,height=1080,framerate=(fraction)10/1' ! waylandsink</code> |
| + | |
| + | *视频预览(CS-MIPI-IMX307 @720p mode 60fps) |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=720,framerate=(fraction)60/1' ! waylandsink</code> |
| + | |
| + | *视频预览 (CS-MIPI-SC132 @1280*1080 mode 45fps) |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=1080,framerate=(fraction)45/1' ! waylandsink</code> |
| + | |
| + | *视频预览 (CS-MIPI-SC132 @1080*1280 mode 45fps) |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1080,height=1280,framerate=(fraction)45/1' ! waylandsink</code> |
| + | |
| + | *抓拍一张图片(VEYE-MIPI-327S,CS-MIPI-IMX307 @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> |
| + | |
| + | *抓拍一张图片 (CS-MIPI-IMX307 @720p mode) |
| + | |
| + | <code>gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video0 ! 'video/x-raw, width=1280,height=720' ! jpegenc ! filesink location=720p.jpg</code> |
| + | |
| + | *抓拍一张图片 (CS-MIPI-SC132 @1280*1080 mode) |
| + | |
| + | <code>gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video0 ! 'video/x-raw, width=1280,height=1080' ! jpegenc ! filesink location=test_image.jpg</code> |
| + | |
| + | *v4l2grab抓拍一张图片(VEYE-MIPI-327S,CS-MIPI-IMX307 @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]参数来指明操作的是哪个摄像头。 |
| + | |
| + | [[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系列参数控制软件包使用说明]] |
| + | |
| + | [[CS-MIPI-X 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|CS系列参数控制软件包使用说明]] |
| + | |
| + | === 驱动的源代码编译 === |
| + | 以下操作均在ubuntu Host PC上进行。 |
| + | |
| + | ===== 准备编译环境 ===== |
| + | 参考官方文档《MYD-JX8MX-Software-Manual-zh-V1.3.pdf》,部署开发环境。 |
| + | |
| + | 注意,如果只为了编译kernel,可以不使用yocto。当然,使用yocto也是没问题的。 |
| + | |
| + | 03-Tools目录下存在编译工具链安装脚本,直接执行即可。 |
| + | |
| + | <code>./fsl-imx-xwayland-glibc-x86_64-meta-toolchain-aarch64-toolchain-4.19-warrior.sh</code> |
| + | |
| + | 安装编译工具链之后,执行以下命令配置编译环境: |
| + | |
| + | <code>source /opt/fsl-imx-xwayland/4.19-warrior/environment-setup-aarch64-poky-linux</code> |
| + | |
| + | ===== 编译标准版本 ===== |
| + | 将官方提供的<code>fsl-release-yocto.tar.gz</code>拷贝到开发主机,并解压。 |
| + | |
| + | <code>fsl-release-yocto/linux-imx</code>目录下已经提供了linux的源码。 |
| + | |
| + | <code>cd fsl-release-yocto/linux-imx</code> |
| + | |
| + | <code>make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux- defconfig</code> |
| + | |
| + | <code>make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux- -j4</code> |
| + | |
| + | ====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/myir_nxp_i.mx.git</nowiki></code> |
| + | |
| + | dts文件路径为:linux/arch/arm64/boot/dts/freescale,将dts文件放到此路径。 |
| + | |
| + | *Modify dts Makefile |
| + | |
| + | 修改同路径下的Makefile,增加对应dts编译选项。 |
| + | ====增加编译选项==== |
| + | <code>make menuconfig</code> |
| + | |
| + | 增加对应camera模块驱动的编译选项,路径为 Device Drivers > Multimedia support > V4L platform devices > MXC Camera/V4L2 PRP Features support 。 |
| + | ====编译输出==== |
| + | <code>make Image dtbs -j4</code> |
| + | |
| + | === 参考资料 === |
| + | 米尔科技:http://www.myir-tech.com/ |
| + | |
| + | MYD-JX8MX资料: http://down.myir-tech.com/MYD-JX8MX/ |