Nil*_*nck 5 linux embedded arm i2c
对于我正在研究的项目,我必须通过I2C与多功能芯片通信.我可以通过I2C/dev/i2c-1接口从linux用户空间执行此操作.
但是,似乎司机正在同时与同一芯片通话.这导致我的I2C_SLAVE访问失败,其中错误的值为EBUSY.好吧 - 我可以通过ioctl I2C_SLAVE_FORCE覆盖它.我尝试过,它的确有效.我的命令到达芯片.
问题:这样做是否安全?我确信我写的地址范围永远不会被任何内核驱动程序访问.但是,我不确定强制I2C通信是否会混淆某些内部状态机左右.(我不是那样进入I2C,我只是使用它......)
供参考,硬件事实:
OS: Linux Architecture: TI OMAP3 3530 I2C-Chip: TWL4030 (does power, audio, usb and lots of other things..)
我不知道那个特定的芯片,但通常你有需要一系列写操作的命令,首先是一个地址来设置某个模式,然后你读或写另一个地址 - 其中第二个地址的功能根据你写的第一个.因此,如果驱动程序处于其中一个操作的中间,并且您中断它(反之亦然),那么您将遇到难以调试的竞争条件.为了获得可靠的解决方案,您最好通过芯片的驱动程序进行通信......