Bitbanging PIO на Coldfire / ucLinux - PullRequest
       39

Bitbanging PIO на Coldfire / ucLinux

3 голосов
/ 22 марта 2010

Вот проблема: мне нужно запрограммировать некоторое оборудование через 2 контакта PIO (1 такт, 1 данные). Ограничения по времени жесткие - время цикла 10 мс. Все это, конечно, пока я поддерживаю сервисы очень высокого уровня (шина CAN, TCP / IP). Нисходящий блок также ACKS, утверждая вывод PIO, сконфигурированный как вход, высокий. Так что этот цикл должен как читать, так и писать. Мне нужно отправить 16 бит в последовательном потоке.

Существует ли установленный способ для такого рода вещей, или я должен просто заставить аппаратчиков добавить PIC или что-то подобное?

Я бы предпочел на этом этапе избегать экзотики, такой как расширения RTAI. Однажды я увидел ссылку на ввод-вывод в пользовательском режиме, которая подразумевала возможный драйвер, управляемый прерываниями, но потеряла его.

Любые указатели приветствуются.

1 Ответ

0 голосов
/ 04 сентября 2010

По моему опыту, самый простой способ - написать драйвер ядра. Разумеется, при условии, что он еще не существует - 1 такт, 1 данные звучат как i2c (хотя цикл 10 мс звучит гораздо медленнее, чем i2c), и уже существуют битовые драйверы i2c для Coldfire. Даже если это не i2c, вы можете найти i2c-adap-mcf_gpio в качестве отправной точки.

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

(Все это также зависит от того, какое ядро ​​вы используете. Простой ввод данных в пользовательском режиме доступен в ядрах 2.6 довольно легко - в ядрах 2.4 есть функции, но они могут потребовать дополнительной работы.)

...