Dunduk 0 19 октября, 2015 Опубликовано 19 октября, 2015 · Жалоба Доброго дня всем! Надеюсь я верно выбрал раздел для вопроса, если нет, прошу простить и переместить. В рамках одного довольно большого устройства планируется использовать 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? (писать драйвер? использовать готовое?) Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ASN 0 19 октября, 2015 Опубликовано 19 октября, 2015 · Жалоба Dunduk Так у Zynq два ARM-ядра, зачем второй процессор? Скорость у Вас ~1МБ десять раз в секунду, а это уже 80 Мбит. Поэтому, IMGO, на PL надо сделать автомат FIFO c доступом по DMA в DDR. Доступ из Linux к области памяти (Shared Region) сделать через отображаемую память (mmap), факт получения сообщения - через прерывания (irq) в отдельных потоках (thread) или Notify. P.S. Это так межпроцессорное взаимодействие в продуктах TI сделано. Достаточно просто и понятно расписано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dunduk 0 19 октября, 2015 Опубликовано 19 октября, 2015 · Жалоба Так у Zynq два ARM-ядра, зачем второй процессор? в несимметричном режиме там наблюдается нестабильная работа, мы делали эксперименты. Конечно надо дальше разбираться но первое впечателние было плохим. Кроме того, там уже производительности не хватает. Ну и нет графического контроллера в Цинке. То что разворачивается в PL отбирает много производительности, скорость досупа к DDR. Поэтому решили разделять на 2 физическим процессора. Доступ из Linux к области памяти (Shared Region) сделать через отображаемую память (mmap), факт получения сообщения - через прерывания (irq) в отдельных потоках (thread) или Notify. P.S. Это так межпроцессорное взаимодействие в продуктах TI сделано. Достаточно просто и понятно расписано. Большое вам спасибо за наводку! Буду изучать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BaN 0 20 октября, 2015 Опубликовано 20 октября, 2015 (изменено) · Жалоба В зависимости от того, какой степени должна быть "реальность времени", можно посмотреть в сторону Xenomai. https://www.osadl.org/fileadmin/dam/rtlws/12/Brown.pdf Изменено 20 октября, 2015 пользователем BaN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 20 октября, 2015 Опубликовано 20 октября, 2015 (изменено) · Жалоба Я бы начал с соединения по TCP/IP. Достаточно быстрое соединение можно получить и все на нижнем уровне уже сделано и работает через ПДП. Да и из хардвера надо только сетевой провод. Если вам надо передавать видео поток, то может воспользоваться gstreamer? Не знаю как Zynq, а imx6 прекрасно обработает многие виды компрессии данных своим DSP. Видео высокого разрешения будет работать без сучка и задоринки. поставьте на оба конца imx6 и легко пересылайте по RTP(UDP) до 30 кадров 1080х1920 в секунду. Меньшие форматы и частоты кадров будет обрабатывать еще легче. Пересылка будет осуществляться с использованием того вида компрессии, который вы укажете. Прикол в том, что такое решение не сильно нагрузит процессор. Изменено 20 октября, 2015 пользователем Tarbal Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dunduk 0 20 октября, 2015 Опубликовано 20 октября, 2015 · Жалоба В зависимости от того, какой степени должна быть "реальность времени", можно посмотреть в сторону Xenomai. https://www.osadl.org/fileadmin/dam/rtlws/12/Brown.pdf спасибо, изучаю. Я бы начал с соединения по TCP/IP. т.е. с обоих сторон ставить Phy и разъем-трансформатор? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 20 октября, 2015 Опубликовано 20 октября, 2015 · Жалоба т.е. с обоих сторон ставить Phy и разъем-трансформатор? Если в разных корпусах, то да. Если на одной плате, то наверное и не обязательно, но не владею вопросом достаточно, чтобы предложить решение как не ставить. Вам видео надо передавать? Попробуйте на готовых платах (evaluation boards) сначала, что все прокатит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ASN 0 20 октября, 2015 Опубликовано 20 октября, 2015 · Жалоба Dunduk Не надо с обоих сторон ставить Phy и разъем-трансформатор :) Достаточно только подправить сетевой драйвер в Linux, то есть вместо записи/чтения в MAC сделать обмен через свой специальный интерфейс (на PL). На пользовательском уровне работать как с обычными сокетами - сетевая подсистема сама всё протолкнём. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 20 октября, 2015 Опубликовано 20 октября, 2015 (изменено) · Жалоба Dunduk Не надо с обоих сторон ставить Phy и разъем-трансформатор :) Достаточно только подправить сетевой драйвер в Linux, то есть вместо записи/чтения в MAC сделать обмен через свой специальный интерфейс (на PL). На пользовательском уровне работать как с обычными сокетами - сетевая подсистема сама всё протолкнём. Кстати да. Я вспомнил, что что-то подобное было описано в Техас Инструментс руководстве для AM3715 (документ на 3000 с лишним страниц). Не уверен на 100%, что оно, но похоже что так. Изменено 20 октября, 2015 пользователем Tarbal Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 20 октября, 2015 Опубликовано 20 октября, 2015 · Жалоба Сеть - это естественное решение в данном случае. Можно поставить свитч с двумя внутренними интерфейсами (что-нибудь типа KSZ8864), тогда будет еще внешний интерфейс, доступный обоим кристаллам, плюс возможность снаружи обмен засниффить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dunduk 0 21 октября, 2015 Опубликовано 21 октября, 2015 · Жалоба Вам видео надо передавать? нет, видео не надо, только картинки. сделать обмен через свой специальный интерфейс (на PL). не могли бы вы чуть подробнее описать что это за спец интерфейс? И PL у меня есть со стороны Zynq, а со стороны iMX6 его нет. Сеть - это естественное решение в данном случае. Можно поставить свитч с двумя внутренними интерфейсами (что-нибудь типа KSZ8864), тогда будет еще внешний интерфейс, доступный обоим кристаллам, плюс возможность снаружи обмен засниффить. большое спасибо за совет. Несколько смущает наличие свича и (как я понял) все же Phy и разъем-трансформаторов. Это по себестоимости ударит и в плане разводки, кабелей не так здорово. Но все же идея интересная - можно использовать много чего готового. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 21 октября, 2015 Опубликовано 21 октября, 2015 · Жалоба большое спасибо за совет. Несколько смущает наличие свича и (как я понял) все же Phy и разъем-трансформаторов. Это по себестоимости ударит и в плане разводки, кабелей не так здорово. Но все же идея интересная - можно использовать много чего готового. Для внутреннего обмена никаких PHY и трансформаторов не нужно, у свитча есть на то раздельные интерфейсы MII/RMII. Трансформатор с разъемом потребуется только для внешнего интерфейса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dunduk 0 21 октября, 2015 Опубликовано 21 октября, 2015 · Жалоба Для внутреннего обмена никаких PHY и трансформаторов не нужно, у свитча есть на то раздельные интерфейсы MII/RMII. Трансформатор с разъемом потребуется только для внешнего интерфейса. О! это вообще отличная новость. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 21 октября, 2015 Опубликовано 21 октября, 2015 · Жалоба не могли бы вы чуть подробнее описать что это за спец интерфейс? И PL у меня есть со стороны Zynq, а со стороны iMX6 его нет. Это вы сами должны его придумать и описать. "Спец" потому, что специально под вашу задачу создается. Можно получить хорошую эффективность, но в стороне от главных дорог развития цивилизации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 21 октября, 2015 Опубликовано 21 октября, 2015 · Жалоба нет, видео не надо, только картинки. Если это картинки, которые можно представить как видео (которое тоже серия картинок), то многое упростится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться