Приветствую всех.
Есть задача реализовать MDB(multi-drop-bus) - что-то вроде RS-485: полудуплекс, сеть устройств с отношением master-slaves, на скорости 9600 baud, формат байта: STRTBIT-DATABITS[0..7]-MODEBIT-STPBIT(бит чётности определяет признак адреса устройства). Самое интересное требование по реализации это время максимального отклика для устройств - 5 mS (Остальные промежутки >100 mS) - оно и вызывает у меня основные затруднения. Запускаться приложение будет сначала на x86 для тестирования, а затем будет портировано на ARM.
Изучив доступную документацию обнаружил, что минимальное время для работы таймеров в Linux определяет значение 1/HZ сек. Для новых x86 этот параметр имеет значение 1000 - т.е минимальное время 1 мс. А вот для ARM это значение равно 100 - т.е минимальное время 10 мс. Встаёт вопрос как обеспечить это время отклика?
Пока что пришёл к таким мыслям: Чтобы реализовать время отклика, я буду ловить прерывания от порта и отсылать ответ о приёме данных. Проблема в том, что надо будет писать модуль для ядра и обеспечивать обмен с остальной частью приложения, которая будет в обычном userspace.
Вопросы:
1) Существуют ли иные способы реализации 5 ms отклика?
2) Как лучше всего организовать обмен между двумя частями приложения: модулем ядра и обычным приложением? (обмен должен быть своевременным).