andrewn 0 18 сентября, 2013 Опубликовано 18 сентября, 2013 · Жалоба Новелла увы, превратилась в устареллу, но попохвалятся хочется. Было нужно организовать общение ARM и DSP на одном кристалле - девайс DM6446/DM6467. Сначала попытался сделать попроще, но в итоге пришёл к необходимости сделать синхронный мини-драйвер, на 4 I/O канала [...] никаких линуксов и стандартных API типа POSIXестественно, в ОС, но не Linux, не DSP/BIOS и не SYS/BIOS. разумно ли драйвер нагружать функцией менеджера сообщений? Соответственно, вся логика такого мини-драйвера указывает (вопиёт) на то, что именно драйвер и должен быть менеджером сообщений и процессов, ожидающих I/O по каналу. Естественно, не имеет значения, какой процесс инициирует передачу, ресивер или трансмиттер и на каком из двух ЦПУ (понятно, что транзакция должна начатся в тот момент, когда на концах канала есть оба процесса, передатчик и приёмник). Приоритеты в очередях не учитываются, очереди - обычные FIFO, но каналов-то несколько, они могут быть поделены для разных приоритетов. И небольшой протокольчик тоже необходим, что бы, по крайней мере, передать ресиверу признак завершения транзакции трансмиттером. Наибольшее затруднение в этих девайсах - аппратное средство обмена между процессорами, межпроцессорные прерывания не ставятся в очередь, и приходится спинлоком опрашивать состояние флага в регистре. Это единственное некрасивое место... В общем, мучился в одиночку, сюда не смотрел, а вы тут уже без меня всё сделали... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться