I2c bus number and video node/zh

From wiki_veye
Jump to navigation Jump to search

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.2 Xavier NX 和 TX2 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