Linux 中通过开关配置 I2C 总线
Configuration of I2C bus over a switch in Linux
我的系统有以下简化示意图。
GPIO4
+-----------------------------+
| GPIO3 |
| +------------------------+ |
| | GPIO2 | |
| | +-------------------+ | |
| | | GPIO1 | | |
| | | +--------------+ | | |
| | | | | | | |
+-+--+--+--+-+ | | | |
I2C1 +-------------+ | | | | |
| | ++-+-+-++
I2C2 +-------------+ | I2C | |
| SWITCH +-----------+ CPU |
I2C3 +-------------+ | | |
| | +-------+
I2C4 +-------------+ |
+------------+
在 Linux 中 implement/configure 最好的方法是什么?为什么?是否有可能以某种方式在设备树中配置它,在 user-space 中导出 4 个 i2c 设备,并且每当有人想要 write/read 到这 4 个 i2c 总线之一时,相应的 GPIO 被断言?
是否只能在内核中实现module/driver?
来自评论:
有一个“i2c-mux-gpio”驱动程序可以帮助解决这个问题。 – @Ian Abbott 2019 年 9 月 12 日在 11:35
我的系统有以下简化示意图。
GPIO4
+-----------------------------+
| GPIO3 |
| +------------------------+ |
| | GPIO2 | |
| | +-------------------+ | |
| | | GPIO1 | | |
| | | +--------------+ | | |
| | | | | | | |
+-+--+--+--+-+ | | | |
I2C1 +-------------+ | | | | |
| | ++-+-+-++
I2C2 +-------------+ | I2C | |
| SWITCH +-----------+ CPU |
I2C3 +-------------+ | | |
| | +-------+
I2C4 +-------------+ |
+------------+
在 Linux 中 implement/configure 最好的方法是什么?为什么?是否有可能以某种方式在设备树中配置它,在 user-space 中导出 4 个 i2c 设备,并且每当有人想要 write/read 到这 4 个 i2c 总线之一时,相应的 GPIO 被断言?
是否只能在内核中实现module/driver?
来自评论:
有一个“i2c-mux-gpio”驱动程序可以帮助解决这个问题。 – @Ian Abbott 2019 年 9 月 12 日在 11:35