※ 引述《descent (「雄辯是銀,沉默是金」)》之銘言:
: https://github.com/grandemk/qemu_devices
: 你可以參考這個, 先在 qemu 上練習 pci driver
: 另外找 ldd 或是類似的書籍把 pci 那邊看過,
: 雖然過時, 但是原理都是一樣的
我先向d大說聲抱歉,我推文的時候沒有看到。
FPGA的廠商我沒有用過很多,比如某家提供的IP應該是只有
PCIe slave的支援。現在你需要的是bus master DMA。
最簡單的辦法就是把PCIe 設備當生成網路卡(基本上這個IP應該有範例),
這樣想怎麼發資料回來都可以。
也不知道你的FPGA上有沒有arm hard core,更傻瓜的辦法就是arm core
去生出一個USB peripheral device,然後轉發FGPA memory中的東西。
效能也不是很糟糕(usb ethernet, Jumbo MTU配置下)
基本上會需要PCIe傳輸資料到main memory,除非是自己的memory不夠,
要犧牲main memory(有NUMA的platform可以這樣做,ARM我要恨死你)
這樣做應該是最快的。
不過這種case效能最好的其實是直接把PCI自己的memory給map到host上去,
而且看起來你只需要read不需要write