我的系统上有11个i2c设备节点。
localhost user # ls /dev/i2c*
/dev/i2c-0 /dev/i2c-1 /dev/i2c-10 /dev/i2c-2 /dev/i2c-3 /dev/i2c-4 /dev/i2c-5 /dev/i2c-6 /dev/i2c-7 /dev/i2c-8 /dev/i2c-9
我可以在/ sys文件系统中找出哪一个是哪个:
localhost devices # pwd
/sys/bus/i2c/devices
localhost devices # ls -al
total 0
drwxr-xr-x 2 root root 0 Jan 10 15:45 .
drwxr-xr-x 4 root root 0 Jan 10 15:45 ..
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-0 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-0
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-1 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-1
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-10 -> ../../../devices/pci0000:00/0000:00:19.2/i2c_designware.5/i2c-10
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-10508825:00 -> ../../../devices/pci0000:00/0000:00:19.2/i2c_designware.5/i2c-10/i2c-10508825:00
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-2 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-2
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-3 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-3
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-4 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-4
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-5 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-5
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-6 -> ../../../devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-6
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-7 -> ../../../devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-8 -> ../../../devices/pci0000:00/0000:00:15.2/i2c_designware.2/i2c-8
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-9 -> ../../../devices/pci0000:00/0000:00:15.3/i2c_designware.3/i2c-9
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-INT343B:00 -> ../../../devices/pci0000:00/0000:00:19.2/i2c_designware.5/i2c-10/i2c-INT343B:00
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-INT343B:01 -> ../../../devices/pci0000:00/0000:00:19.2/i2c_designware.5/i2c-10/i2c-INT343B:01
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-PRP0001:00 -> ../../../devices/pci0000:00/0000:00:15.2/i2c_designware.2/i2c-8/i2c-PRP0001:00
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-PRP0001:01 -> ../../../devices/pci0000:00/0000:00:15.3/i2c_designware.3/i2c-9/i2c-PRP0001:01
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-SYNA7817:00 -> ../../../devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-6/i2c-SYNA7817:00
lrwxrwxrwx 1 root root 0 Jan 10 15:45 i2c-SYNA7817:01 -> ../../../devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-SYNA7817:01
我想要的是i2c-PRP0001- *,我可以看到它目前符号链接到i2c-8和i2c-9。
i2c不保证这些节点号是稳定的(即使在重新启动时也是如此)。我想让我的程序能够查看i2c设备并确定它是否是我关心的设备。
我可以破解shell脚本来完成基本上我在命令行上所做的事情,但是有一种编程(C)方式来查找设备信息(即内核在哪里获取它写入的信息sys文件系统)?