Все помнят мои посты про всякие синтетические среды для виртуализации разработки? Так вот, будущее наступило. SmartFusion2 -> в TQ144. M2S005 и M2S010. С гигабитным Ethernet на борту. http://www.microsemi.com/products/fpga-soc/soc-fpga/smartfusion2#product-tables
http://caxapa.ru/590951.html
Младший камень TQ144 вроде как 17 евро стоит - непонятно, насколько спекульская цена. И его пока еще негде - нет - это они совсем недавно решили порадовать нас правильным корпусом.
Унутре Cortex-M3 166 Мгц, 128 FLASH 64 SRAM, DMA и прочий "полный фарш" -->
Единственный минус - Ethernet без синхронизации, так что синхронизацию придется колхозить по месту.
Далее все просто. Берем лялиховый копмук с 10G Ethernet на боту. Intel® Xeon® D - самое то
http://caxapa.ru/584927.html
Берем 1G свитч, в котором есть хотя бы один порт 10G - такие есть на рынке. Или, на худой конец, берем 8-port 10-Gigabit ProSafe® Plus Switch XS708E
http://caxapa.ru/388626.html
он сейчас чуть ли не 1k$ стоит и доступен много где
И делаем кучку махоньких платок - одна платка = один интерфейс.
Надо тебе в проект видеозахват - делаешь махонький модуль с TV декодером, указанным камнем, и RJ45. Обмен с хостом - Ethernet raw, в лялихе такое из user space без проблем.
Надо тебе аццкий АЦП|ЦАП - аналогично.
А лялихе пишешь "синтетические дрова". Которые имеют API, с которым работает пикладной код, в точности такое же, как в целевой системе.
Да, мегапоток, который будет "симулировать" работу периферии, можно запустить на отдельном ядре - и на этом задержек не будет.
Ну и RTOS с синтетическим портом, под которой крутится целевой код. Эта тема много раз обсуждалась, тут изобретать нечего.
Что имеем в итоге:
* мгновенное прототипирование, особенно если есть запас нарабтанных модульков для целевой области
* ПО модулька примитивное, по сути, никакой локальной обработки данных: получил данные от периферии - засунул в Eternet. Обратно аналогично
* Можно сделать каркас целевого приложения, скажем на Tcl. Т.е., запускаешь ОСьку, под ней потоки, а в каждом потоке - запускаешь Tcl интерпретатор в режиме встраивания, и делаешь первую версию прототипа решения с невероятной скоростью.
* большой запас по всем ресурсам позволяет решить много важных задач этапа разработки
-- капчуринг террабайтных данных позволяет тщательно исследовать работу периферии и найти там всякие "тонкие эффекты", пока юзера не предъявили "толстые претензиии"
-- тот же капчуринг позволяет тщательно протоколировать работу программы, всякие там тесты покрытия и проч.
Все описанное было возможно и при 100 Мбит Ethernt, но там латентность и пропускная способность все же на порядок хуже. D1 оцифрованное "в лоб" видео по 100 Мбит не передать и проч.
"Гигабит на палтке" сильно снижает вероятность, что канал связи с хостом станет проблемой, которая ограничит возможности.
Критика?