Difference between revisions of "I2c bus number and video node/zh"

From wiki_veye
Jump to navigation Jump to search
 
(12 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序号 ==
+
== 不同板子上的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 7: Line 7:
  
 
=== Raspberry pi ===
 
=== Raspberry pi ===
 +
 +
==== General ====
 
对于只有1个MIPI CSI-2口的树莓派主板,i2c总线序号是10。如果你的piOS很老,那么有可能是0。
 
对于只有1个MIPI CSI-2口的树莓派主板,i2c总线序号是10。如果你的piOS很老,那么有可能是0。
  
Line 41: Line 43:
  
 
=== Nvidia Jetson ===
 
=== Nvidia Jetson ===
<br />
+
下面的描述仅仅针对Nvidia官方的开发板,第三方底板需与厂家确认。
  
==== NXP i.MX platform ====
+
==== AGX-Xavier,AGX-Orin和 TX2开发板 ====
<br />
+
[[ADP-N1-V2.0 Adapter Board Data Sheet|ADP-N1-V2.0]]有6个MIPI CSI-2接口,对应的i2c序号是30-35。
 +
{| class="wikitable"
 +
!cam index
 +
!i2c number
 +
|-
 +
|0
 +
|30
 +
|-
 +
|1
 +
|31
 +
|-
 +
|2
 +
|32
 +
|-
 +
|3
 +
|33
 +
|-
 +
|4
 +
|34
 +
|-
 +
|5
 +
|35
 +
|}
 +
 
 +
===== 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"
 +
!cam index
 +
!i2c number
 +
|-
 +
|0
 +
|10
 +
|-
 +
|1
 +
|9
 +
|}
 +
{| class="wikitable"
 +
!cam index
 +
!i2c number
 +
|-
 +
|0
 +
|9
 +
|-
 +
|1
 +
|10
 +
|}
 +
 
 +
==== Nano B01 ====
 +
{| class="wikitable"
 +
!cam index
 +
!i2c number
 +
|-
 +
|0
 +
|7
 +
|-
 +
|1
 +
|8
 +
|}
 +
 
 +
==== Nano A02和Nano 2GB ====
 +
i2c序号为6。
 +
 
 +
=== NXP i.MX platform ===
 +
 
 +
====<big>AVNET Maaxboard(mini)</big>====
 +
i2c序号为0。
 +
 
 +
==== MYIR i.MX8 board ====
 +
{| class="wikitable"
 +
!cam index
 +
!i2c number
 +
|-
 +
|0
 +
|0
 +
|-
 +
|1
 +
|1
 +
|}
 +
 
 +
==== google Coral board ====
 +
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

English

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的位置,那么:

xavier agx
camera number 安装位置 i2c bus /dev/video设备节点
1 cam2 32 /dev/video0
2 cam4 34 /dev/video1