Драйвер UART для QNX
2009-01-17 00:34На днях переписал драйвер асинхронных портов для QNX. Стандартный devc-ser8250 был написан для классического UART 8250 и совершенно не умеет обращаться с современными чипами, типа TL16C654. Казалось бы, какая разница? Читая даташит, совсем не очевидно, что обработка прерываний для новых чипов делается _совсем_ не так. То есть совершенно по-другому. В Linux и FreeBSD это место давно переписано как надо (сам участвовал), а QNX отстал от прогресса.
Ниже приводятся результаты испытаний на процессоре Элвис MC-24. Это процент от максимально возможного темпа передачи и приёма данных при одном работающем канале и при четырёх. На больших скоростях сказывается ограниченная производительность процессора.
Скорость | Один канал | Четыре канала |
---|---|---|
57600 | 99 % | 97 % |
115200 | 99 % | 67 % |
230400 | 97 % | 37 % |
460800 | 92 % | 19 % |