對ARM

2016-03-14 41 views
0

我是新相干DMA內存爲ARM/Linux和有些事情是我不明白。 (我可能完全離開這個) 我試圖讓分配給我的設備驅動程序一致的MEM(即,這是一個區域的非緩存或寫)。對ARM

所以我試圖在Linux中使用dma_alloc_coherent。 當我檢查頁面表屬性時,我注意到我得到「可共享設備」內存類型。 有關於緩存策略,如下面的鏈接數存儲器類型:

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0363e/Cacgehgd.html

我期待,我會得到一個非緩存或直寫式內存。 「可共享設備」類型的緩存策略是什麼?它與顯式非緩存和直寫內存類型有何區別?

回答

0

實際上取決於ARM架構的版本可能是緩存的內存區域的DMA傳輸後的連貫。有一個在AMBA規範(AXI相干擴展)的擴展,它保持的高速緩存存儲器的一致性另外一個主機進行轉移後,在換句話說,DMA執行轉移後另一個核心或者緩存將有更新的值(或者至少標籤被標記爲無效)。

這意味着,如果Linux的內核是知道你的ARM架構釋放它信任的一致性機制來更新緩存,因此頁面被標記爲可共享。

請參閱ACE協議規範的基於ARM的網站上的問題d(需要註冊)瞭解更多信息。