Для проекта, над которым я работаю, мне нужно общаться с многофункциональным чипом через I2C. Я могу сделать это из пользовательского пространства Linux через интерфейс I2C /dev/i2c-1.
Однако кажется, что драйвер одновременно разговаривает с одним и тем же чипом. Это приводит к тому, что мой доступ к I2C_SLAVE завершается с ошибкой с ошибкой EBUSY. Что ж, я могу переопределить это через ioctl I2C_SLAVE_FORCE. Я попробовал, и это работает. Мои команды доходят до чипа.
Вопрос: Безопасно ли это делать? Я точно знаю, что диапазоны адресов, которые я пишу, никогда не доступны ни одному драйверу ядра. Однако я не уверен, что форсирование связи I2C таким образом может сбить с толку какой-то внутренний конечный автомат или что-то в этом роде (я не это в I2C, я просто использую его...)
Для справки, аппаратные факты:
OS: Linux Architecture: TI OMAP3 3530 I2C-Chip: TWL4030 (does power, audio, usb and lots of other things..)