mitsuya-shin
2018年10月9日 14時44分
以下マニュアルでの記述の意味は具体的にどのようにすればよいのでしょうか?
質問の回答でお願いします。
「Armadillo-840 では標準状態では、CONFIG_I2C_CHARDEV が有効となっているためユーザードラ
イバで I2C デバイスを制御することができます。 ユーザードライバを利用する場合は、Linux カーネル
で I2C デバイスに対応するデバイスドライバを無効にする必要があります。」
質問1.「CONFIG_I2C_CHARDEV 」が有効になっているときの以下の制御ができるのでしょうか?
また、できない場合どの様な設定が必要となりますでしょうか?
LaRafd = open(I2C_DRV0, O_RDWR); // I2C-0のドライバオープン
ioctl(LaRafd, I2C_SLAVE, I2cAddr); // アドレス設定
ret = write(LaRafd, pdata, count); // データ等の送信
ret = read(fd, pdata + read_length, count - read_length); //データの受信
質問2.「Linux カーネルでI2C デバイスに対応するデバイスドライバを無効にする必要...」の無効にするには
どんな設定をすればよいでしょうか?
コメント
mitsuya-shin
at_kojiro.yamada
2018年11月9日 18時45分
> 以下マニュアルでの記述の意味は具体的にどのようにすればよいのでしょうか?
> 質問の回答でお願いします。
> 「Armadillo-840 では標準状態では、CONFIG_I2C_CHARDEV が有効となっているためユーザードラ
> イバで I2C デバイスを制御することができます。 ユーザードライバを利用する場合は、Linux カーネル
> で I2C デバイスに対応するデバイスドライバを無効にする必要があります。」
>
> 質問1.「CONFIG_I2C_CHARDEV 」が有効になっているときの以下の制御ができるのでしょうか?
> また、できない場合どの様な設定が必要となりますでしょうか?
>
> LaRafd = open(I2C_DRV0, O_RDWR); // I2C-0のドライバオープン
> ioctl(LaRafd, I2C_SLAVE, I2cAddr); // アドレス設定
>
> ret = write(LaRafd, pdata, count); // データ等の送信
> ret = read(fd, pdata + read_length, count - read_length); //データの受信
上記でうまく動かないということでしょうか?
I2Cの信号(SCLとSDA)は出ていますか?
すでに確認されているかもしれませんが、
linux-3.4-at/Documentation/i2c/dev-interface も参考にしてみてください。
>
>
> 質問2.「Linux カーネルでI2C デバイスに対応するデバイスドライバを無効にする必要...」の無効にするには
> どんな設定をすればよいでしょうか?
例えば、RTC S35390Aを /dev/i2c-0 経由で制御したい場合は、
LinuxカーネルコンフィギュレーションでCONFIG_RTC_DRV_S35390Aを無効化する必要があります。
もし、お使いのI2C デバイスに対応するデバイスドライバがカーネルに存在しないのであれば、この作業は必要ありません。