ユーザースペースからI²C経由でEEPROMに書き込もうとしています。/dev
デバイスファイルとopen
、、、および関数read
を使用しています。読み取りは問題なく機能しますが、書き込みに同じコードを使用すると(読み取りを書き込みに置き換えるだけ)、失敗します。EEPROMは書き込み保護されていません(EEPROMドライバーのデバイスファイルへのエコーは機能します)。write
ioctl
私が持っているコードは次のとおりです。
if ((fd = open(write_destination, O_RDWR)) < 0) {
goto error;
}
if (ioctl(fd, I2C_SLAVE_FORCE, 0x50) < 0) {
goto error_fd;
}
while((n = write(fd, self->fields[i].buf, self->fields[i].size)) != self->fields[i].size)
perror("");
私は何を見落としていますか?