作者lihgong (当宪兵是我一辈子的耻辱)
看板ASM
标题[问题] DMA & Cache
时间Sun Dec 21 22:44:39 2008
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记忆体, 似乎又有点慢
有没有人知道比较好的方法的, 或是有没有什麽资料可以看
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.89.65
1F:推 jeunder:只 flush dma 传输的区域 ~ 01/07 00:55
2F:推 menspower:宣告成Volatile? 06/04 22:07