我想知道如何在Linux中分配i2c总线编号?在我们的一个遗留开发板中,我们连接了i2c从设备.当我使用i2cdetect探测设备时,它显示/ dev / i2c1和/ dev / i2c3.
/ dev中的i2c0和i2c1发生了什么变化?这些数字是如何分配的?有人可以对此有所了解吗?
注意:我观察到的是每次启动时,我只看到1和3而不是0和1.这对于所有启动都不会改变.如果我想将这些i2c1和i2c3符号链接到i20和i2c1,有可能吗?
解决方法:
在我的系统上,i2c总线是设备/ dev / i2c-0等等.这些称为适配器,并按内核文档文件i2c/dev-interface中的描述动态分配:
You should
inspect /sys/class/i2c-dev/ or run “i2cdetect -l” to decide this.
Adapter numbers are assigned somewhat dynamically, so you can not
assume much about them. They can even change from one boot to the next.
sudo i2cdetect -l将列出哪个总线做什么,或者你可以查看/ sys / class / i2c-dev /:
$sudo i2cdetect -l|sort
i2c-0 i2c i915 gmbus ssc I2C adapter
i2c-1 i2c i915 gmbus vga I2C adapter
i2c-2 i2c i915 gmbus panel I2C adapter
...
$head /sys/class/i2c-dev/i2c-*/name
==> /sys/class/i2c-dev/i2c-0/name <==
i915 gmbus ssc
==> /sys/class/i2c-dev/i2c-1/name <==
i915 gmbus vga
...
注意:虽然通常会动态分配i2c总线编号,但在某些平台上,Linux将使用来自设备的信息将特定编号分配给i2c适配器.据推测,一些主板可以类似地具有请求特定总线编号的平台驱动程序,以更好地表示硬件布局.内核调用是i2c_add_numbered_adapter().
标签:linux,linux-kernel
来源: https://codeday.me/bug/20190813/1647602.html