Я реализую протокол через последовательные порты в Linux. Протокол основан на схеме ответа на запрос, поэтому пропускная способность ограничена временем, которое требуется для отправки пакета на устройство и получения ответа. Устройства в основном основаны на arm и работают под управлением Linux> = 3.0. У меня проблемы с уменьшением времени приема-передачи ниже 10 мс (115200 бод, 8 бит данных, без контроля четности, 7 байт на сообщение).
Какие интерфейсы ввода-вывода дадут мне наименьшую задержку: выбор, опрос, epoll или опрос вручную с помощью ioctl? Влияет ли блокирующий или неблокирующий ввод-вывод на задержку?
Я попытался установить флаг low_latency с помощью setserial. Но казалось, что это не подействовало.
Могу ли я попытаться уменьшить задержку чем-нибудь еще? Поскольку я контролирую все устройства, можно было бы даже исправить ядро, но этого не следует делать.
---- Редактировать ----
Используемый последовательный контроллер - 16550A.