組み込みデバイスで i2c インターフェイスを使用しようとしています。
(i2c-dev.h
カーネルと同じ名前のファイルではなく、ユーザー空間のヘッダー ファイルです!) で、i2c_msg は次のように定義されます。
struct i2c_msg {
__u16 addr; // slave address
unsigned short flags;
short len; // msg length
char *buf; // pointer to msg data
};
struct i2c_msg
から読ん<kernel root>/Documentation/i2c
でいますが、配列がどれくらいの大きさになるかについてはどこにも言及していないようです*buf
(つまり、最大サイズはどうなりlen
ますか)。
私が遭遇した最も近い答えは doc-filewriting-clients:327
にあり、次のように述べられています。
...、3 番目は読み書きするバイト数 (バッファの長さより小さくなければならず、msg.len が u16 であるため、64k より小さくなければなりません。)
ただし、これは i2c 関数「i2c_master_send」を指します。そのため、何が起こっているのかは明らかではありませんが、
buf[len-1]
本当に64kまでいけるの?すなわち。i2c バスを介して 1 回の書き込み操作 (および 1 つのデバイス) で最大 64kBytes のデータを送信できますか?
ご協力ありがとうございました。