如何在ARM中尝试缓存失效和缓存清理?

时间:2014-08-13 06:04:08

标签: arm cpu-cache

我想在Raspberry Pi中尝试缓存清理并缓存invalidate 有人可以指导这个。我只是想做一些DMA传输并尝试一些东西。

另外,如果有人可以给我一个关于如何检查ARM中是否已清除缓存的代码片段,那将非常有帮助

对于Eg。我想看看缓存的状态并给出指令 缓存失效并查看内存状态

1 个答案:

答案 0 :(得分:2)

对于Raspberry Pi的ARM1176,缓存维护是通过c7系统控制协处理器(CP15)操作执行的。数据缓存清理+无效是mcr p15, 0, r0, c7, c14, 0,缓存脏状态寄存器(只是告诉您缓存是否干净或已写入)可以使用mrc p15, 0, <Rd>, c7, c10, 6读取。

这里有太多信息要反刍,所以我建议参考TRM了解详细信息 - 如果Raspberry Pi TRM没有覆盖它,你可以找到完整的ARM1176 TRM here(包含一些示例代码片段)。与往常一样,the Linux source也提供了方便的实际使用参考。

至于检查实际的缓存内容,AFAIK你需要一个JTAG硬件调试器,如果有的话。