VEYE CS Camera for Jetson TX2/zh

From wiki_veye
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

如何在英伟达Jetsno TX2平台使用VEYE系列和CS系列摄像头模组

1 概述

本文讲述怎样将VEYE系列和CS系列模组接入到英伟达公司的Jetson TX2开发板以及我们兼容的其他TX2主板上。采用的JetPack软件版本为r32.2.1,我们提供了编译好的固件和源代码两种方式来方便用户的使用。

VEYE-MIPI-327/CS-MIPI-IMX307是星光级内置ISP的摄像头模组,输出为MIPI-CSI2接口UYVY流模式。对于图像效果参数,我们并没有采用V4L2接口实现,而是采用了DRA(Directly Register Access)模式,我们提供了一组Shell脚本直接控制摄像头模组。

2 硬件准备及安装

2.1 英伟达TX2 Developer Kit

我们设计了专用的转接板,连接方式如图(TODO)。

2.2 瑞泰RTSO-9001

CS-MIPI-IMX307 与瑞泰RTSO-9001(TX2)


与瑞泰RTSO-9001配套,需使用树莓派相机扩展板RTST-RPI转接板。

备注:当前版本的RTSO-9001的MIPI CSI-2接口供电能力不足以支撑我们摄像头的功率需求,需要额外5V供电给摄像头。上图中并未提现。

3 更新Jetson TX2系统

3.1 参考资料

Jetson start up: https://developer.nvidia.com/embedded/learn/getting-started-jetson

TX2 development kit: https://developer.nvidia.com/embedded/jetson-tx2-developer-kit

SDK Manager: https://docs.nvidia.com/sdk-manager/index.html
TX2 user guide: link

3.2 开发环境准备

  • 编译工具链

请参考这个链接安装编译工具链。

  • L4T源码和Rootfs

可以通过SDK Manager或者直接下载两种方式来获得源码。具体参考官方文档,此处不再赘述。

  • 配置开发环境

以下步骤假设SDK安装目录为<TOPDIR>,源代码在$L4T_DIR/sources目录。

export TOP_DIR=/home/xumm/nvidia/nvidia_sdk/JetPack_4.2.2_Linux_GA_P3310/

export L4T_DIR=$TOP_DIR/Linux_for_Tegra

export LOCALVERSION=-tegra

export LDK_ROOTFS_DIR=$TOP_DIR/Linux_for_Tegra/rootfs

export ARCH=arm64

export CROSS_COMPILE=aarch64-linux-gnu-

export CROSS32CC=arm-linux-gnueabihf-gcc

export TEGRA_KERNEL_OUT=$L4T_DIR/sources/kernel/out_kernel

export KERNEL_PATH=$L4T_DIR/sources/kernel/out_kernel

export NVIDIA_PATH=$L4T_DIR/sources/kernel/nvidia

export TX2_DTS_PATH=$L4T_DIR/sources/hardware/nvidia/platform/t18x/porg/kernel-dts

cd $L4T_DIR/sources/kernel/kernel-4.9/

  • 生成默认版本烧写镜像,烧写默认镜像到TX2,准备好L4T环境

cd $L4T_DIR

sudo ./apply_binaries.sh  

sudo ./flash.sh jetson-tx2 mmcblk0p1

3.3 下载我们的bsp包

cd $L4T_DIR

git clone https://github.com/veyeimaging/nvidia_jetson_veye_bsp.git

export RELEASE_PACK_DIR=$L4T_DIR/nvidia_jetson_veye_bsp

3.4 使用预编译好Image和DTB

  • 升级Image文件

无论是使用预编译好的程序还是使用自行编译出的Image,只需在Jetson TX2板子上执行:

sudo cp <path to your Image dir>/Image /boot/Image -f

  • 烧写DTS分区,进入烧写模式,在Host PC执行

cp <path to your dtb dir>/dtbfilename $L4T_DIR/kernel/dtb/ -f

cd $L4T_DIR

sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1

烧写完成后,断电重启。

3.5 使用源码进行编译

3.5.1 编译kernel
  • patch代码

cp $RELEASE_PACK_DIR/drivers_source/cs_imx307 veye327/* $NVIDIA_PATH/drivers/media/i2c/

cp $RELEASE_PACK_DIR/drivers_source/kernel_csimx307veye327_config $L4T_DIR/sources/kernel/kernel-4.9/arch/arm64/configs/kernel_csimx307veye327_config

  • 编译

cd $L4T_DIR/sources/kernel/kernel-4.9/

make ARCH=arm64 O=$TEGRA_KERNEL_OUT kernel_csimx307veye327_config

make ARCH=arm64 O=$TEGRA_KERNEL_OUT Image -j4

编译完成的Image文件在 $TEGRA_KERNEL_OUT/arch/arm64/boot/Image,可以用于整体烧写,也可以用于动态升级。

以下用于整体烧写

sudo cp $TEGRA_KERNEL_OUT/arch/arm64/boot/Image $L4T_DIR/kernel/ -f

3.5.2 编译DTS(TODO)
  • patch代码
  • 编译

kernel和DTS编译完成后,可以按照上面的步骤升级Image和DTB。

4 应用和测试

4.1 系统状态检测

完成系统安装后,在Jetson TX2板端执行以下命令来检测是否正确连接摄像头。

(Below TODO)

dmesg | grep veye327  

应当有如下提示:

subdev veye327 6-003b bound

此外,检查/dev/video0设备节点,应当是存在的。

4.2 视频流软件包和测试

4.2.1 Gstreamer Usage (TODO)
  • 视频预览1080p HD(硬件加速)

gst-launch-1.0 v4l2src ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvoverlaysink sync=false

  • 视频预览720p@60 HD(硬件加速)

gst-launch-1.0 v4l2src ! "video/x-raw,format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)60/1" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvoverlaysink sync=false

  • 视频录像1080p HD(硬件加速)

gst-launch-1.0 v4l2src ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! omxh264enc qp-range=20,20:20,20:-1,-1 ! matroskamux ! queue ! filesink location=videoname.mkv

  • 录像回放(硬件加速)

gst-launch-1.0 filesrc location=videoname.mkv ! matroskademux ! h264parse ! omxh264dec ! nvoverlaysink

  • 抓拍图片

gst-launch-1.0 v4l2src num-buffers=1 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080" ! jpegenc ! filesink location=jpgname.jpg

4.3 视频控制软件包的使用(TODO)

cd $L4T_DIR/jetson_nano/i2c_cmd/bin

具体使用说明请见:I2C脚本使用说明

5 参考资料

1. 北京瑞泰新时代公司网址:http://www.realtimes.cn/