[PCIe <-> PCI, Ubuntu Studio и "мелкий ПК" как
универсальная среда разработки синтетических и полусинтетических
портов embedded систем] Сложилось! Синтетический порт - http://caxapa.ru/1017431/ Я много писал по теме, можно поискать, но evgeniy1294 все грамотно изложил.
Полусинтетический порт - драйвера низкого уровня в реальном мире, остальное виртуально. http://caxapa.ru/1017484/
Ubuntu Studio - кандидат на годную программную платформу
https://ubuntustudio.org/ubuntu-studio-installer
https://wiki.ubuntu.com/FocalFossa/ReleaseNotes/UbuntuStudio
https://help.ubuntu.com/community/UbuntuStudio/RealTimeKernel - Low-Latency Kernel Latency as low as 0.1 millisecond can and has been achieved using this kernel.
Kotlin - весьма интересная платформа для задачи
http://caxapa.ru/807031/
USB - это кака.
Ethernet - хорошо, гигабитный особенно. Надо проверить, какая ланетность Ethernet RAW в user space.
PCI - вообще было бы идеально.
Он еще встречается на платах, даже новых, но он там 5V, и это плохо для 3.3V FPGA. Не все штатно имеют диод на 3V, рассчитанный под параметры PCI.
XIO2001IPNP инд., XIO2001PNP комм. ~$5 128-HTQFP (14x14)! XIO2001 PCI Express to PCI Bus Translation Bridge. Fully Compliant With PCI Express Base Specification, Revision 2.0. Full PCI Local Bus 66-MHz/32-Bit Throughput. Вложено.
Берем недорогую современную FPGA и делаем контроллер нужной степени крутизны. Недорогая 4-х слойка, которая фтыкается в PCIe разъем.
За счет kernel loadable module в Linux можно даже драйвер отладить, если повезет, без перезагрузки.
"Мелкий ПК" является именно инструментальным ПК, которым управляют с основного ПК. Возможно, сборку тоже на основном ведут.
Можно запустить Verilator и запустить модель периферии, которой пока еще нет, и тоже подцепить ее к программному синтетическому порту.
http://caxapa.ru/267297
http://caxapa.ru/981568
Собственно, дальше просто пишем код. Сложный код. В удобном огружении Linux (Valgrind и все такое)
Все приведенные мною средства разработки открытые. И вот в чем польза.
Даже в самом небольшом городе я могу поствить на столе LTE маршрутизатор, Linux машину и платочку, на которых код будет писать и отлаживать человек "с другого конца Земли". Просто пото, что он умеет писать нужный мне код. Хорошо, еще очень сложную вещь забыл - GSM прозетка, перегружать при зависоне.
xio2001.pdf