реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> как организовать взаимодействие двух ARM-ов под Linux?, прошу совета
Dunduk
сообщение Oct 19 2015, 09:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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? (писать драйвер? использовать готовое?)
Спасибо!
Go to the top of the page
 
+Quote Post
ASN
сообщение Oct 19 2015, 10:32
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



Dunduk
Так у Zynq два ARM-ядра, зачем второй процессор?
Скорость у Вас ~1МБ десять раз в секунду, а это уже 80 Мбит.
Поэтому, IMGO, на PL надо сделать автомат FIFO c доступом по DMA в DDR.
Доступ из Linux к области памяти (Shared Region) сделать через отображаемую память (mmap), факт получения сообщения - через прерывания (irq) в отдельных потоках (thread) или Notify.
P.S. Это так межпроцессорное взаимодействие в продуктах TI сделано. Достаточно просто и понятно расписано.
Go to the top of the page
 
+Quote Post
Dunduk
сообщение Oct 19 2015, 10:40
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 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 сделано. Достаточно просто и понятно расписано.

Большое вам спасибо за наводку! Буду изучать.
Go to the top of the page
 
+Quote Post
BaN
сообщение Oct 20 2015, 10:31
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 144
Регистрация: 28-08-07
Пользователь №: 30 111



В зависимости от того, какой степени должна быть "реальность времени", можно посмотреть в сторону Xenomai.
https://www.osadl.org/fileadmin/dam/rtlws/12/Brown.pdf

Сообщение отредактировал BaN - Oct 20 2015, 10:34
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 20 2015, 11:50
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Я бы начал с соединения по TCP/IP. Достаточно быстрое соединение можно получить и все на нижнем уровне уже сделано и работает через ПДП. Да и из хардвера надо только сетевой провод.

Если вам надо передавать видео поток, то может воспользоваться gstreamer? Не знаю как Zynq, а imx6 прекрасно обработает многие виды компрессии данных своим DSP. Видео высокого разрешения будет работать без сучка и задоринки. поставьте на оба конца imx6 и легко пересылайте по RTP(UDP) до 30 кадров 1080х1920 в секунду.
Меньшие форматы и частоты кадров будет обрабатывать еще легче. Пересылка будет осуществляться с использованием того вида компрессии, который вы укажете.

Прикол в том, что такое решение не сильно нагрузит процессор.

Сообщение отредактировал Tarbal - Oct 20 2015, 13:57
Go to the top of the page
 
+Quote Post
Dunduk
сообщение Oct 20 2015, 14:49
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 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 и разъем-трансформатор?
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 20 2015, 14:55
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Dunduk @ Oct 20 2015, 18:49) *
т.е. с обоих сторон ставить Phy и разъем-трансформатор?


Если в разных корпусах, то да. Если на одной плате, то наверное и не обязательно, но не владею вопросом достаточно, чтобы предложить решение как не ставить. Вам видео надо передавать?

Попробуйте на готовых платах (evaluation boards) сначала, что все прокатит.
Go to the top of the page
 
+Quote Post
ASN
сообщение Oct 20 2015, 18:02
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



Dunduk
Не надо с обоих сторон ставить Phy и разъем-трансформатор sm.gif
Достаточно только подправить сетевой драйвер в Linux, то есть вместо записи/чтения в MAC сделать обмен через свой специальный интерфейс (на PL).
На пользовательском уровне работать как с обычными сокетами - сетевая подсистема сама всё протолкнём.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 20 2015, 22:22
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(ASN @ Oct 20 2015, 22:02) *
Dunduk
Не надо с обоих сторон ставить Phy и разъем-трансформатор sm.gif
Достаточно только подправить сетевой драйвер в Linux, то есть вместо записи/чтения в MAC сделать обмен через свой специальный интерфейс (на PL).
На пользовательском уровне работать как с обычными сокетами - сетевая подсистема сама всё протолкнём.


Кстати да. Я вспомнил, что что-то подобное было описано в Техас Инструментс руководстве для AM3715 (документ на 3000 с лишним страниц). Не уверен на 100%, что оно, но похоже что так.

Сообщение отредактировал Tarbal - Oct 20 2015, 22:27
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 20 2015, 22:52
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Сеть - это естественное решение в данном случае. Можно поставить свитч с двумя внутренними интерфейсами (что-нибудь типа KSZ8864), тогда будет еще внешний интерфейс, доступный обоим кристаллам, плюс возможность снаружи обмен засниффить.
Go to the top of the page
 
+Quote Post
Dunduk
сообщение Oct 21 2015, 07:38
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 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 и разъем-трансформаторов. Это по себестоимости ударит и в плане разводки, кабелей не так здорово. Но все же идея интересная - можно использовать много чего готового.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 21 2015, 07:46
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Dunduk @ Oct 21 2015, 10:38) *
большое спасибо за совет.
Несколько смущает наличие свича и (как я понял) все же Phy и разъем-трансформаторов. Это по себестоимости ударит и в плане разводки, кабелей не так здорово. Но все же идея интересная - можно использовать много чего готового.

Для внутреннего обмена никаких PHY и трансформаторов не нужно, у свитча есть на то раздельные интерфейсы MII/RMII. Трансформатор с разъемом потребуется только для внешнего интерфейса.
Go to the top of the page
 
+Quote Post
Dunduk
сообщение Oct 21 2015, 08:45
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 15-08-09
Пользователь №: 51 904



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

О! это вообще отличная новость. Спасибо.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 21 2015, 11:10
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Dunduk @ Oct 21 2015, 11:38) *
не могли бы вы чуть подробнее описать что это за спец интерфейс? И PL у меня есть со стороны Zynq, а со стороны iMX6 его нет.


Это вы сами должны его придумать и описать. "Спец" потому, что специально под вашу задачу создается. Можно получить хорошую эффективность, но в стороне от главных дорог развития цивилизации.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 21 2015, 12:49
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Dunduk @ Oct 21 2015, 11:38) *
нет, видео не надо, только картинки.


Если это картинки, которые можно представить как видео (которое тоже серия картинок), то многое упростится.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016