私が取り組んでいるプロジェクトでは、I2C を介して多機能チップと通信する必要があります。これは、I2C /dev/i2c-1 インターフェイスを介して Linux ユーザー空間から実行できます。
ただし、ドライバーは同時に同じチップに話しかけているようです。これにより、I2C_SLAVE アクセスが EBUSY の errno 値で失敗します。そうですね - ioctl I2C_SLAVE_FORCE を介してこれをオーバーライドできます。試してみましたが、うまくいきます。私のコマンドはチップに届きます。
質問: これを行っても安全ですか? 私が書いたアドレス範囲が、どのカーネルドライバーからも決してアクセスされないことは確かです。ただし、そのように I2C 通信を強制すると、内部の状態マシンなどを混乱させる可能性があるかどうかはわかりません。
参考までに、ハードウェアの事実:
OS: リナックス アーキテクチャ: TI OMAP3 3530 I2C-Chip: TWL4030 (電源、オーディオ、USB、その他多くのことを行います..)