FPD LINK III for Jetson/zh
1 概述
FPD-Link SerDes III是由TI提供的视频流同轴远程传输方案。我们设计了FPD-LINK3-TX和FPD-LINK3-2RX电路板,可以实现1或2路MIPI图像的同轴远程传输,传输距离可达8米(RG174电缆)或10米(RG58电缆)。
在Jetson Nano和NX平台上,采用1组FPD-LINK3-TX和FPD-LINK3-2RX电路板,即可提供1路摄像头的远传,采用2组则可以提供2路摄像头的远传。FPD-LINK3-2RX上,fpdlink通道为port0(J3)到J9。
在Jetson TX2和Jetson AGX Xavier平台上,采用1组FPD-LINK3-TX和FPD-LINK3-2RX电路板,即可提供2路摄像头的远传。FPD-LINK3-2RX上,fpdlink通道为port0(J3)和port1(J4)到J7,J7为一个4lan的mipi接口,通过虚拟通道技术,支持两路独立的摄像头数据传输。
在Jetson TX2平台,采用3组FPD-LINK电路板,配合1个ADP-N2,即可提供6路视频的远传。在Jetson AGX Xavier平台,采用4组FPD-LINK电路板,配合一个ADP-N3,即可提供8路视频的远传。
在应用层看来,FPD-Link通道支持所有MIPI摄像头功能,包括图像、i2c通信、同步IO、触发IO。
在使用CS-FPD-CAM时,必须要参考如下文章:
2 硬件准备及安装
注:FPD-LINK3-2RX需要12V供电。
3 更新Jetson系统
与更新Jetson Nano, Jetson TX2,AGX Xavier和Xavier NX系统步骤基本一致,注意dts、dtb、均采用fpdlink后缀的版本即可。driver源代码和Image,兼容FPD-Link和MIPI接口摄像头。
3.1 Image和DTB更新成功了吗?
3.1.1 对于Image
ls /sys/bus/i2c/drivers/
应当有 veye327 csx307 cssc132 i2c-ds90ub954 目录的存在
3.1.1.1 对于DTB
DTB在不同的平台和不同的摄像头模组都会有所不同。
- Nano A02
ls /proc/device-tree/host1x/i2c@546c0000/
- Nano B01
ls /proc/device-tree/cam_i2cmux/i2c@*
- TX2 Devkit
ls /proc/device-tree/i2c@3180000/tca9548@70/i2c@*
- AGX Xavier
ls /proc/device-tree/i2c@3180000/tca9548@70/i2c@*
- Xavier NX
ls /proc/device-tree/cam_i2cmux/i2c@*
应当可以发现摄像头型号和ds90ub954。
4 I2C地址
fpdlink port:FPD-LINK3-2RX板子上,J3为port 0, J4为port 1。
4.1 Nano A02
Camera Index | I2C bus | I2C Addr | Location |
---|---|---|---|
Camera 0 | 6 | 0x3b | FPD-LINK3-2RX port 0 |
4.2 Nano B01
Camera Index | I2C bus | I2C Addr | Location |
---|---|---|---|
Camera 0 | 7 | 0x3b | FPD-LINK3-2RX port 0 |
Camera 1 | 8 | 0x3b | FPD-LINK3-2RX port 0 |
4.3 Xavier NX
Camera Index | I2C bus | I2C Addr | Location |
---|---|---|---|
Camera 0 | 9 | 0x3b | FPD-LINK3-2RX port 0 |
Camera 1 | 10 | 0x3b | FPD-LINK3-2RX port 0 |
4.4 AGX Xavier
Camera Index | I2C bus | I2C Addr | Location |
---|---|---|---|
Camera 0 | 30 | 0x3b | ADP-N3 J1--FPD-LINK3-2RX port 0 |
Camera 1 | 30 | 0x3c | ADP-N3 J1--FPD-LINK3-2RX port 1 |
Camera 2 | 31 | 0x3b | ADP-N3 J2--FPD-LINK3-2RX port 0 |
Camera 3 | 31 | 0x3c | ADP-N3 J2--FPD-LINK3-2RX port 1 |
Camera 4 | 32 | 0x3b | ADP-N3 J3--FPD-LINK3-2RX port 0 |
Camera 5 | 32 | 0x3c | ADP-N3 J3--FPD-LINK3-2RX port 1 |
Camera 6 | 33 | 0x3b | ADP-N3 J4--FPD-LINK3-2RX port 0 |
Camera 7 | 33 | 0x3c | ADP-N3 J4--FPD-LINK3-2RX port 1 |
4.5 TX2 Devkit
Camera Index | I2C bus | I2C Addr | Location |
---|---|---|---|
Camera 0 | 30 | 0x3b | ADP-N2 J1--FPD-LINK3-2RX port 0 |
Camera 1 | 30 | 0x3c | ADP-N2 J1--FPD-LINK3-2RX port 1 |
Camera 2 | 31 | 0x3b | ADP-N2 J2--FPD-LINK3-2RX port 0 |
Camera 3 | 31 | 0x3c | ADP-N2 J2--FPD-LINK3-2RX port 1 |
Camera 4 | 32 | 0x3b | ADP-N2 J3--FPD-LINK3-2RX port 0 |
Camera 5 | 32 | 0x3c | ADP-N2 J3--FPD-LINK3-2RX port 1 |
4.6 应用和测试
与MIPI模组在Jetson平台的应用和测试步骤一致。
5 FPD LINK III 脚本使用说明
$ ./fpdlink3_i2c_jetson.sh
Usage: ./fpdlink3_i2c_jetson.sh [-f] function name -b bus -p port -p1 param1 -p2 param2 -p3 param3
options:
-f [function name] function name
-b [i2c bus num] i2c bus number
-p [fpdlink port] fpd link port number [0,1]
-p1 [param1] param1 of each function
-p2 [param1] param2 of each function
-p3 [param1] param3 of each function
support functions: rpi_init,sync_init,trigger_init
fpdlink port:FPD-LINK3-2RX板子上,J3为port 0, J4为port 1。
5.1 fpdlink3_i2c.sh使用详解
FPD-Link设备的探测和加载在系统上电初始化的时候会自动完成。
5.1.1 sync_init
./fpdlink3_i2c_jetson.sh -f sync_init -b [busnum] -p [portnum] -p1 0
配置I2C总线busnum,port为portnum,设备为sync模式的主摄像头。
将对应的FPD-LINK3-TX的J1信号连接到FPD-LINK3-2RX的J6,信号方向为TX-->RX。
./fpdlink3_i2c_jetson.sh -f sync_init -b [busnum] -p [portnum] -p1 1
配置I2C总线busnum,port为portnum,设备为sync模式的从摄像头。
将对应的FPD-LINK3-2RX的J8信号连接到port1上的FPD-LINK3-TX的J1,信号方向为RX-->TX。
5.1.2 trigger_init
./fpdlink3_i2c_jetson.sh -f trigger_init -b [busnum] -p [portnum]
配置I2C总线busnum,port为portnum,设备为trigger模式。
将FPD-LINK3-2RX的J6-0信号连接到portnum上的FPD-LINK3-TX的J1-0,信号方向为RX-->TX。
6 典型使用方案
6.1 CS-FPD-CAM单纯视频流,连接到Jetson Nano B01/NX
6.2 CS-FPD-CAM单纯视频流,连接到Jetson AGX Xavier
6.3 CS-FPD-CAM-IMX307的同步模式,连接到Jetson Nano B01/NX
6.3.1 第一步:
上电之后,
ls /dev/video*
出现video0,video1,则表明已正确检测到摄像头,可以连出视频。
6.3.2 第二步:
执行上面步骤后,
- 配置cam0为主
./fpdlink3_i2c_jetson.sh -f sync_init -p 0 -p1 0 -b [i2c_bus_num]
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 0 -b [i2c_bus_num] -d 0x3b
- 配置cam1为从
./fpdlink3_i2c_jetson.sh -f sync_init -p 1 -p1 1 -b [i2c_bus_num]
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 1 -b [i2c_bus_num] -d 0x3b
6.3.3 第三步:
指令执行之后,对摄像头的码流获取和I2C指令控制,与MIPI接口的摄像头完全一致。
6.4 CS-FPD-CAM-IMX307的同步模式,连接到Jetson AGX Xavier
6.4.1 第一步:
上电之后,
ls /dev/video*
出现video0-7,则表明已正确检测到摄像头,可以连出视频。
6.4.2 第二步:
执行上面步骤后,I2C通路就可以访问了。
- 配置cam0为主
./fpdlink3_i2c_jetson.sh -f sync_init -p 0 -p1 0 -b 30
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 0 -b 30 -d 0x3b
- 配置cam1-7为从
./fpdlink3_i2c_jetson.sh -f sync_init -p 1 -p1 1 -b 30
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 1 -b 30 -d 0x3c
./fpdlink3_i2c_jetson.sh -f sync_init -p 0 -p1 1 -b 31
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 1 -b 31 -d 0x3b
./fpdlink3_i2c_jetson.sh -f sync_init -p 1 -p1 1 -b 31
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 1 -b 31 -d 0x3c
./fpdlink3_i2c_jetson.sh -f sync_init -p 0 -p1 1 -b 32
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 1 -b 32 -d 0x3b
./fpdlink3_i2c_jetson.sh -f sync_init -p 1 -p1 1 -b 32
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 1 -b 32 -d 0x3c
./fpdlink3_i2c_jetson.sh -f sync_init -p 0 -p1 1 -b 33
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 1 -b 33 -d 0x3b
./fpdlink3_i2c_jetson.sh -f sync_init -p 1 -p1 1 -b 33
./cs_mipi_i2c.sh -w -f streammode -p1 1 -p2 1 -b 33 -d 0x3c
6.4.3 第三步:
指令执行之后,对摄像头的码流获取和I2C指令控制,与MIPI接口的摄像头完全一致。
6.4.4 同步信号连接说明:
同步信号连接如上图所示,需将J5与J7的2、4、6、8pin连接在一起,将J6与J8的2、4、6、8pin连接在一起。
同步信号原理图请参考:
6.5 CS-FPD-CAM-SC132外触发模式,连接到Jetson Nano B01/NX
6.5.1 第一步:
上电之后,
ls /dev/video*
出现video0,则表明已正确检测到摄像头。
6.5.2 第二步:
./fpdlink3_i2c_jetson.sh -f trigger_init -p 0 -b [i2c_bus_num] -d 0x3b
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b [i2c_bus_num] -d 0x3b
配置port 0为硬触发模式。
6.5.3 第三步:
执行上面步骤后,I2C通路就可以访问了。对摄像头的码流获取和I2C指令控制,与MIPI接口的摄像头完全一致。
参考摄像机模组触发模式应用说明进行触发模式的配置。
6.6 CS-FPD-CAM-SC132外触发模式,连接到Jetson AGX Xavier
6.6.1 第一步:
上电之后,
ls /dev/video*
出现video0-7,则表明已正确检测到摄像头。
6.6.2 第二步:
./fpdlink3_i2c_jetson.sh -f trigger_init -p 0 -b 30 -d 0x3b
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 30 -d 0x3b
./fpdlink3_i2c_jetson.sh -f trigger_init -p 1 -b 30 -d 0x3c
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 30 -d 0x3c
./fpdlink3_i2c_jetson.sh -f trigger_init -p 0 -b 31 -d 0x3b
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 31 -d 0x3b
./fpdlink3_i2c_jetson.sh -f trigger_init -p 1 -b 31 -d 0x3c
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 31 -d 0x3c
./fpdlink3_i2c_jetson.sh -f trigger_init -p 0 -b 32 -d 0x3b
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 32 -d 0x3b
./fpdlink3_i2c_jetson.sh -f trigger_init -p 1 -b 32 -d 0x3c
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 32 -d 0x3c
./fpdlink3_i2c_jetson.sh -f trigger_init -p 0 -b 33 -d 0x3b
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 33 -d 0x3b
./fpdlink3_i2c_jetson.sh -f trigger_init -p 1 -b 33 -d 0x3c
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 33 -d 0x3c
./fpdlink3_i2c_jetson.sh -f trigger_init -p 0 -b 34 -d 0x3b
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 34 -d 0x3b
./fpdlink3_i2c_jetson.sh -f trigger_init -p 1 -b 34 -d 0x3c
./cs_mipi_i2c.sh -w -f streammode -p1 3 -b 34 -d 0x3c
配置所有摄像头为硬触发模式。
6.6.3 第三步:
执行上面步骤后,I2C通路就可以访问了。对摄像头的码流获取和I2C指令控制,与MIPI接口的摄像头完全一致。
参考摄像机模组触发模式应用说明进行触发模式的配置。