Я пытаюсь записать в EEPROM через I²C из пространства пользователя. Я использую файл устройства /dev
и функции open
, read
, 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("");
Что я пропускаю?