Difference between revisions of "I2c bus number and video node/zh"
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[I2c bus number and video node|English]] | [[I2c bus number and video node|English]] | ||
− | == | + | == 不同板子上的i2c bus序号 == |
对于MIPI CSI-2接口的摄像机模组来说,普遍提供了i2c总线作为参数配置的通信通道。用户使用i2c协议来读写摄像机的寄存器。我们提供了一系列的shell脚本来方便这个操作,比如[[VEYE-MIPI-290/327 i2c/|VEYE-MIPI-X I2C.sh]],[[CS-MIPI-X i2c|CS-MIPI-X I2C.sh]],[[5m mipi i2c user guide|VEYE-MIPI-IMX335 i2c script]]。 | 对于MIPI CSI-2接口的摄像机模组来说,普遍提供了i2c总线作为参数配置的通信通道。用户使用i2c协议来读写摄像机的寄存器。我们提供了一系列的shell脚本来方便这个操作,比如[[VEYE-MIPI-290/327 i2c/|VEYE-MIPI-X I2C.sh]],[[CS-MIPI-X i2c|CS-MIPI-X I2C.sh]],[[5m mipi i2c user guide|VEYE-MIPI-IMX335 i2c script]]。 | ||
Line 45: | Line 45: | ||
下面的描述仅仅针对Nvidia官方的开发板,第三方底板需与厂家确认。 | 下面的描述仅仅针对Nvidia官方的开发板,第三方底板需与厂家确认。 | ||
− | ==== AGX- | + | ==== AGX-Xavier,AGX-Orin和 TX2开发板 ==== |
[[ADP-N1-V2.0 Adapter Board Data Sheet|ADP-N1-V2.0]]有6个MIPI CSI-2接口,对应的i2c序号是30-35。 | [[ADP-N1-V2.0 Adapter Board Data Sheet|ADP-N1-V2.0]]有6个MIPI CSI-2接口,对应的i2c序号是30-35。 | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 70: | Line 70: | ||
|} | |} | ||
− | ==== Xavier NX | + | ===== AGX-Orin @ Jetpack6.0+ ===== |
+ | {| class="wikitable" | ||
+ | !cam index | ||
+ | !i2c number | ||
+ | |- | ||
+ | |0 | ||
+ | |9 | ||
+ | |- | ||
+ | |1 | ||
+ | |10 | ||
+ | |- | ||
+ | |2 | ||
+ | |11 | ||
+ | |- | ||
+ | |3 | ||
+ | |12 | ||
+ | |- | ||
+ | |4 | ||
+ | |13 | ||
+ | |- | ||
+ | |5 | ||
+ | |14 | ||
+ | |} | ||
+ | ==== Xavier NX , TX2 NX, Orin Nano,Orin NX ==== | ||
+ | 存在两种底板 | ||
{| class="wikitable" | {| class="wikitable" | ||
!cam index | !cam index | ||
Line 80: | Line 104: | ||
|1 | |1 | ||
|9 | |9 | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | !cam index | ||
+ | !i2c number | ||
+ | |- | ||
+ | |0 | ||
+ | |9 | ||
+ | |- | ||
+ | |1 | ||
+ | |10 | ||
|} | |} | ||
− | ==== Nano | + | ==== Nano B01 ==== |
{| class="wikitable" | {| class="wikitable" | ||
!cam index | !cam index | ||
Line 99: | Line 133: | ||
=== NXP i.MX platform === | === NXP i.MX platform === | ||
− | ==== | + | ====<big>AVNET Maaxboard(mini)</big>==== |
i2c序号为0。 | i2c序号为0。 | ||
Line 116: | Line 150: | ||
==== google Coral board ==== | ==== google Coral board ==== | ||
i2c序号为1。 | i2c序号为1。 | ||
+ | |||
+ | === Rockchip platform === | ||
+ | |||
+ | ==== ROC-RK3566-PC ==== | ||
+ | i2c序号为4。 | ||
+ | |||
+ | ==== ROC-RK3588S-PC ==== | ||
+ | i2c序号为7。 | ||
+ | |||
+ | === 工具软件 === | ||
+ | 下面的两个命令行工具可以辅助理解和查找问题。 | ||
+ | |||
+ | ==== i2cdetect ==== | ||
+ | 在linux命令下,执行以下命令来探测i2c总线上的所有i2c设备地址。通常情况下,我们的模块地址是0x3b。 | ||
+ | |||
+ | <code>i2cdetect -y -r [busnumber]</code> | ||
+ | |||
+ | ==== dmesg ==== | ||
+ | dmesg可以打印出linux kernel启动阶段的日志,也包括我们摄像机模组的驱动日志。仔细观察可以看到启动阶段的i2c probe流程以及是否成功的信息。 | ||
== /dev/video设备节点的说明 == | == /dev/video设备节点的说明 == | ||
+ | 一般情况下,我们为mipi模组在不同平台上实现了v4l2标准的驱动。Linux kernel启动时会根据dts的指示找到对应的驱动,并probe摄像头。成功后生成/dev/videoX设备节点,其中X是根据probe到的顺序而生成的数字。 | ||
+ | 这容易造成一个常见的误解,在此说明一下。 | ||
+ | 对于支持多个mipi摄像头的主板,每个摄像头的i2c序号是由摄像头安装位置所确定的,但是生成的/dev/videoX节点名称却不能提前确定。比如说,我们在agx板子安装两个摄像头,安装到cam2和cam4的位置,那么: | ||
+ | {| class="wikitable" | ||
+ | |+xavier agx | ||
+ | !camera number | ||
+ | !安装位置 | ||
+ | !i2c bus | ||
+ | !/dev/video设备节点 | ||
+ | |- | ||
+ | |1 | ||
+ | |cam2 | ||
+ | |32 | ||
+ | |/dev/video0 | ||
+ | |- | ||
+ | |2 | ||
+ | |cam4 | ||
+ | |34 | ||
+ | |/dev/video1 | ||
+ | |} | ||
<br /> | <br /> |
Latest revision as of 16:50, 14 August 2024
1 不同板子上的i2c bus序号
对于MIPI CSI-2接口的摄像机模组来说,普遍提供了i2c总线作为参数配置的通信通道。用户使用i2c协议来读写摄像机的寄存器。我们提供了一系列的shell脚本来方便这个操作,比如VEYE-MIPI-X I2C.sh,CS-MIPI-X I2C.sh,VEYE-MIPI-IMX335 i2c script。
一般而言,每一个主板上会为每个MIPI CSI-2接口提供一个配套的i2c总线。我们所有的脚本,都可以使用 -b [bus numer]
选项来指明此次操作针对哪个i2c bus总线。下面我们总结了常用的主板的i2c bus序号。
1.1 Raspberry pi
1.1.1 General
对于只有1个MIPI CSI-2口的树莓派主板,i2c总线序号是10。如果你的piOS很老,那么有可能是0。
特别的,对于Computer module系列。做如下说明:
1.1.2 CM3
CM3 使用i2c-1分时复用来访问不同的摄像机模组。
./camera_i2c_config [cameranum]
cameranum | description |
---|---|
0 | CAM0 |
1 | CAM1 |
1.1.3 CM4
CM4使用两个独立的i2c总线访问两个摄像机模组。
./camera_i2c_config
i2c bus num | description |
---|---|
0 | CAM0 |
10 | CAM1 |
1.2 Nvidia Jetson
下面的描述仅仅针对Nvidia官方的开发板,第三方底板需与厂家确认。
1.2.1 AGX-Xavier,AGX-Orin和 TX2开发板
ADP-N1-V2.0有6个MIPI CSI-2接口,对应的i2c序号是30-35。
cam index | i2c number |
---|---|
0 | 30 |
1 | 31 |
2 | 32 |
3 | 33 |
4 | 34 |
5 | 35 |
1.2.1.1 AGX-Orin @ Jetpack6.0+
cam index | i2c number |
---|---|
0 | 9 |
1 | 10 |
2 | 11 |
3 | 12 |
4 | 13 |
5 | 14 |
1.2.2 Xavier NX , TX2 NX, Orin Nano,Orin NX
存在两种底板
cam index | i2c number |
---|---|
0 | 10 |
1 | 9 |
cam index | i2c number |
---|---|
0 | 9 |
1 | 10 |
1.2.3 Nano B01
cam index | i2c number |
---|---|
0 | 7 |
1 | 8 |
1.2.4 Nano A02和Nano 2GB
i2c序号为6。
1.3 NXP i.MX platform
1.3.1 AVNET Maaxboard(mini)
i2c序号为0。
1.3.2 MYIR i.MX8 board
cam index | i2c number |
---|---|
0 | 0 |
1 | 1 |
1.3.3 google Coral board
i2c序号为1。
1.4 Rockchip platform
1.4.1 ROC-RK3566-PC
i2c序号为4。
1.4.2 ROC-RK3588S-PC
i2c序号为7。
1.5 工具软件
下面的两个命令行工具可以辅助理解和查找问题。
1.5.1 i2cdetect
在linux命令下,执行以下命令来探测i2c总线上的所有i2c设备地址。通常情况下,我们的模块地址是0x3b。
i2cdetect -y -r [busnumber]
1.5.2 dmesg
dmesg可以打印出linux kernel启动阶段的日志,也包括我们摄像机模组的驱动日志。仔细观察可以看到启动阶段的i2c probe流程以及是否成功的信息。
2 /dev/video设备节点的说明
一般情况下,我们为mipi模组在不同平台上实现了v4l2标准的驱动。Linux kernel启动时会根据dts的指示找到对应的驱动,并probe摄像头。成功后生成/dev/videoX设备节点,其中X是根据probe到的顺序而生成的数字。
这容易造成一个常见的误解,在此说明一下。
对于支持多个mipi摄像头的主板,每个摄像头的i2c序号是由摄像头安装位置所确定的,但是生成的/dev/videoX节点名称却不能提前确定。比如说,我们在agx板子安装两个摄像头,安装到cam2和cam4的位置,那么:
camera number | 安装位置 | i2c bus | /dev/video设备节点 |
---|---|---|---|
1 | cam2 | 32 | /dev/video0 |
2 | cam4 | 34 | /dev/video1 |