|
|
  |
как организовать взаимодействие двух ARM-ов под Linux?, прошу совета |
|
|
|
Oct 19 2015, 09:21
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 15-08-09
Пользователь №: 51 904

|
Доброго дня всем! Надеюсь я верно выбрал раздел для вопроса, если нет, прошу простить и переместить. В рамках одного довольно большого устройства планируется использовать 2 процессора: 1. Zynq для сбора данных, ЦОС и пр. Скорее всего под управлением embedded Linux 2. Недорогой ARM типа iMX6Solo для интерфейсов: дисплей, LAN, USB и т.д. Под Linux. Причина такого разделения в том что Zynq вынужден обрабатывать задачи практически реального времени (я понимаю что Linux не для этого, но все же), а второй процессор реализует UI, где много всякой рутины и нет риал тайма. В общем, решили использовать именно 2 процессора. Между процессорами нужно организовать обмен данными: картинки по ~1МБ десять раз в секунду, команды управления (единицы байт) и пр. Не имея опыта в этом вопросе я могу предположить некоторые варианты: 1. Dual port RAM 2. Обычная память, например DDR, из которой внутри ПЛИС Zynq "слеплена" dual port memory 3. непосредственная связь от проца к процу через например UART, с использованием метода "запрос готовности" - ACK - "передача данных" и т.д. 4. То же самое но с использованием FIFO или DMA. Собственно, вопрос, какой из вариантов наиболее жизненный? Как это будет выглядеть с точки зрения Linux? (писать драйвер? использовать готовое?) Спасибо!
|
|
|
|
|
Oct 19 2015, 10:40
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 15-08-09
Пользователь №: 51 904

|
Цитата(ASN @ Oct 19 2015, 13:32)  Так у Zynq два ARM-ядра, зачем второй процессор? в несимметричном режиме там наблюдается нестабильная работа, мы делали эксперименты. Конечно надо дальше разбираться но первое впечателние было плохим. Кроме того, там уже производительности не хватает. Ну и нет графического контроллера в Цинке. То что разворачивается в PL отбирает много производительности, скорость досупа к DDR. Поэтому решили разделять на 2 физическим процессора. Цитата(ASN @ Oct 19 2015, 13:32)  Доступ из Linux к области памяти (Shared Region) сделать через отображаемую память (mmap), факт получения сообщения - через прерывания (irq) в отдельных потоках (thread) или Notify. P.S. Это так межпроцессорное взаимодействие в продуктах TI сделано. Достаточно просто и понятно расписано. Большое вам спасибо за наводку! Буду изучать.
|
|
|
|
|
Oct 20 2015, 14:49
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 15-08-09
Пользователь №: 51 904

|
Цитата(BaN @ Oct 20 2015, 13:31)  В зависимости от того, какой степени должна быть "реальность времени", можно посмотреть в сторону Xenomai. https://www.osadl.org/fileadmin/dam/rtlws/12/Brown.pdfспасибо, изучаю. Цитата(Tarbal @ Oct 20 2015, 14:50)  Я бы начал с соединения по TCP/IP. т.е. с обоих сторон ставить Phy и разъем-трансформатор?
|
|
|
|
|
Oct 20 2015, 18:02
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
DundukНе надо с обоих сторон ставить Phy и разъем-трансформатор  Достаточно только подправить сетевой драйвер в Linux, то есть вместо записи/чтения в MAC сделать обмен через свой специальный интерфейс (на PL). На пользовательском уровне работать как с обычными сокетами - сетевая подсистема сама всё протолкнём.
|
|
|
|
|
Oct 21 2015, 07:38
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 15-08-09
Пользователь №: 51 904

|
Цитата(Tarbal @ Oct 20 2015, 17:55)  Вам видео надо передавать? нет, видео не надо, только картинки. Цитата(ASN @ Oct 20 2015, 21:02)  сделать обмен через свой специальный интерфейс (на PL). не могли бы вы чуть подробнее описать что это за спец интерфейс? И PL у меня есть со стороны Zynq, а со стороны iMX6 его нет. Цитата(aaarrr @ Oct 21 2015, 01:52)  Сеть - это естественное решение в данном случае. Можно поставить свитч с двумя внутренними интерфейсами (что-нибудь типа KSZ8864), тогда будет еще внешний интерфейс, доступный обоим кристаллам, плюс возможность снаружи обмен засниффить. большое спасибо за совет. Несколько смущает наличие свича и (как я понял) все же Phy и разъем-трансформаторов. Это по себестоимости ударит и в плане разводки, кабелей не так здорово. Но все же идея интересная - можно использовать много чего готового.
|
|
|
|
|
Oct 21 2015, 08:45
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 15-08-09
Пользователь №: 51 904

|
Цитата(aaarrr @ Oct 21 2015, 10:46)  Для внутреннего обмена никаких PHY и трансформаторов не нужно, у свитча есть на то раздельные интерфейсы MII/RMII. Трансформатор с разъемом потребуется только для внешнего интерфейса. О! это вообще отличная новость. Спасибо.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|