作者hizuki (入赘桧月家,我妻彩花)
看板LinuxDev
标题Re: [问题] DMA driver相关问题
时间Fri Feb 25 14:12:15 2022
※ 引述《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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 192.147.44.15 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1645769539.A.CBD.html
1F:推 uniquelegend: 不好意思 想请教一下最後一个方法指的是 02/25 23:13
2F:→ uniquelegend: MMIO吗?但这种不会比DMA还要没效率吗? 02/25 23:14
3F:→ uniquelegend: 非常感谢您的回覆!我一开始忽略了dma的类 02/25 23:18
4F:→ uniquelegend: 型!目前在尝试pci dma的范例! 02/25 23:20
5F:→ hizuki: 因为FPGA一般都把资料处理好处理满了,所以这样比较快 02/27 18:32
6F:推 uniquelegend: 了解!所以在这边使用DMA不会因为节省 02/28 01:04
7F:→ uniquelegend: CPU的处理时间,而增加效率吗? 02/28 01:04
8F:→ hizuki: 其实取决於你fpga功力,一般人都拿来做运算,而 dma这些属 02/28 01:13
9F:→ hizuki: 於附加的应该不会写多好 02/28 01:13
10F:推 uniquelegend: 原来如此xDD 那我了解了!非常感谢您的帮助 02/28 02:26