[問題] DMA & Cache

看板LinuxDev作者 (當憲兵是我一輩子的恥辱)時間16年前 (2008/12/21 22:45), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
DMA & Cache Cache 和 DMA 通常會有 coherence 的問題 這個問題在 wikipedia 有一篇不錯的文章 http://en.wikipedia.org/wiki/Direct_memory_access#Cache_coherency_problem 當 CPU 的 cache 存在某個記憶體位址的內容 而這段記憶體又被 DMA 寫入時 cache 和 DMA 就不會同步... (傷腦筋) ---- 我手邊的 ARM9 (S3C2410) 我現在想啟動他的 DMA來搬資料 Data Sheet跟我說, Cache Coherence 的問題是軟體要自己搞定 看起來我的選擇並不多... ---- 我現在想到兩招可以避這個問題... 1. 第一招就直接 flush Data-cache 但這樣感覺會錯殺無辜... 2. 第二招是把 DMA寫入的位置, 告訴 MMU說這個地方是 non-cacheable 但這樣存取那塊 non-cacheable記憶體, 似乎又有點慢 有沒有人知道比較好的方法的, 或是有沒有什麼資料可以看 謝謝大家 ---- ps. 我的 ARM9 現在跑的是 uC/OS II 不是 Linux, 所以這種 Cache 的問題我得自己想辦法... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.89.65

12/24 21:29, , 1F
dma_map_single
12/24 21:29, 1F
文章代碼(AID): #19JbQYQa (LinuxDev)
文章代碼(AID): #19JbQYQa (LinuxDev)