我如何以编程方式确定哪个i2c设备?

时间:2017-01-10 20:51:34

标签: c linux linux-device-driver i2c

我的系统上有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文件系统)?

0 个答案:

没有答案