※ 引述《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