簡體   English   中英

Linux驅動程序PCI突發傳輸

[英]Linux driver PCI Burst transfer

我有一個關於在PCIe上使用突發讀取和寫入的問題。 我有一個通過PCIe連接到CPU的fpga。 我有一個簡單的驅動程序,僅用於測試。 驅動程序向fpga讀寫數據。 fpga包含一個sram核心,數據可在其中寫入和讀取。 讀取和寫入運行良好,但如果我從設備讀取,則不會出現突發現象。 如果我將數據寫入fpga,並且使用ioremap_wc()映射BAR,則突發工作良好。 但是,如果我從fpga讀取,則cpu只會進行單次訪問而不會突發。 我發現我必須將內存標記為寫回,以便能夠在讀和寫傳輸時緩存數據,但是如果我使用/ proc / mtrr標記我的地址寫回,則在讀和寫時不會爆發。 PCI標頭中的BAR被標記為可預取。 你們中有人知道如何實現突發以在pci總線上進行讀寫嗎? 我希望任何人都可以幫助我。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM