Действительно ли принуждение коммуникации I2C безопасно?

Для проекта я продолжаю работать, я должен говорить с многофункциональной микросхемой через I2C. Я могу сделать, это от пространства пользователя Linux через I2C/dev/i2c-1 взаимодействует через интерфейс.

Однако кажется, что драйвер говорит с той же микросхемой одновременно. Это приводит к моим доступам I2C_SLAVE для сбоя с errno-значением 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..)
5
задан Nils Pipenbrinck 31 December 2009 в 15:37
поделиться

1 ответ

Не знаю, что это за микросхема, но часто бывают команды, требующие последовательность записей, сначала по одному адресу, чтобы установить определенный режим, потом читаешь или записываешь по другому адресу - где функция второго адреса меняется в зависимости от того, что ты записал по первому адресу. Таким образом, если драйвер находится в середине одной из этих операций, и Вы прерываете ее (или наоборот), то у Вас возникает состояние гонки, которое будет трудно отлаживать. Для надежного решения, вам лучше общаться через драйвер чипа...

.
6
ответ дан 14 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: