2013-05-16 116 views
0

我有一個關於在PCIe上使用突發讀寫的問題。我有一個通過PCIe連接到CPU的fpga。我有一個簡單的驅動程序,只是爲了測試。驅動程序向fpga寫入和讀取數據。 fpga包含一個寫入和讀取數據的sram核心。讀取和寫入工作正常,但如果我從設備讀取,則不會發生突發事件。如果我將數據寫入fpga,如果我用ioremap_wc()映射BAR,爆發效果會很好。但是,如果我從fpga中讀取,那麼cpu只會使單個訪問無突發。我發現我必須將內存標記爲回寫以便能夠在讀取寫入傳輸時緩存數據,但是如果我使用/ proc/mtrr標記我的地址回寫,則在讀取和寫入時不會發生突發事件。 PCI標頭中的BAR被標記爲可預取。你們有沒有人知道如何在pci總線上實現突發讀寫?我希望有人能幫助我。Linux驅動程序PCI突發傳輸

回答

0

在PICe總線上獲得突發傳輸的最佳方式是使用DMA控制器而不是處理器I/O。如果您的FPGA是PCIe總線主設備,您可以對其進行編程以傳輸數據。否則,大多數平臺內置DMA控制器。

我希望寫入組合來執行讀取與未緩存相同。但即使使用ioremap_cache(),您的平臺也可能不會爆發PIO讀取。它可以取決於您的處理器,執行讀取和系統邏輯的指令。