对于我正在进行的一个项目,我必须通过 I2C 与多功能芯片通信。我可以通过 I2C /dev/i2c-1 接口从 linux 用户空间执行此操作。
但是,似乎驱动程序正在同时与同一个芯片通话。这导致我的 I2C_SLAVE 访问失败,错误值为 EBUSY。好吧 - 我可以通过 ioctl I2C_SLAVE_FORCE 覆盖它。我试过了,它有效。我的命令到达芯片。
问题:这样做安全吗?我确信我写的地址范围永远不会被任何内核驱动程序访问。但是,我不确定以这种方式强制 I2C 通信是否会混淆一些内部状态机左右。(我不喜欢I2C,我只是使用它......)
供参考,硬件事实:
操作系统:Linux 架构:TI OMAP3 3530 I2C 芯片:TWL4030(电源、音频、usb 和许多其他东西..)