Re: [問題] DMA driver相關問題

作者: hizuki (ayaka)   2022-02-25 14:12:15
※ 引述《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
作者: uniquelegend (back7590)   2022-02-25 23:13:00
不好意思 想請教一下最後一個方法指的是MMIO嗎?但這種不會比DMA還要沒效率嗎?非常感謝您的回覆!我一開始忽略了dma的類型!目前在嘗試pci dma的範例!
作者: hizuki (ayaka)   2022-02-27 18:32:00
因為FPGA一般都把資料處理好處理滿了,所以這樣比較快
作者: uniquelegend (back7590)   2022-02-28 01:04:00
了解!所以在這邊使用DMA不會因為節省CPU的處理時間,而增加效率嗎?
作者: hizuki (ayaka)   2022-02-28 01:13:00
其實取決於你fpga功力,一般人都拿來做運算,而 dma這些屬於附加的應該不會寫多好
作者: uniquelegend (back7590)   2022-02-28 02:26:00
原來如此xDD 那我瞭解了!非常感謝您的幫助

Links booklink

Contact Us: admin [ a t ] ucptt.com