Caching 内存缓存工作不正常

Caching 内存缓存工作不正常,caching,u-boot,Caching,U Boot,我正在开发一个uboot测试应用程序,它将与一个特殊的DMA引擎一起工作。DMA引擎将在没有“通知”缓存的内存之间传输数据。因此,我希望如果我一直将不同的数据传输到同一个目的地,我会得到过时的数据 然而,我发现我总是得到DMA引擎发送的正确数据。这让我觉得dcache可能没有启用。所以我在cmd-dcache中尝试了uboot构建。它显示我的数据缓存已启用。我检查了TLB表,所有页面都标记为“写回写分配”。那么这意味着缓存已启用 我发现更有趣的是,我写了一个简单的程序,它一直读取相同的地址。我发

我正在开发一个uboot测试应用程序,它将与一个特殊的DMA引擎一起工作。DMA引擎将在没有“通知”缓存的内存之间传输数据。因此,我希望如果我一直将不同的数据传输到同一个目的地,我会得到过时的数据

然而,我发现我总是得到DMA引擎发送的正确数据。这让我觉得dcache可能没有启用。所以我在cmd-dcache中尝试了uboot构建。它显示我的数据缓存已启用。我检查了TLB表,所有页面都标记为“写回写分配”。那么这意味着缓存已启用

我发现更有趣的是,我写了一个简单的程序,它一直读取相同的地址。我发现通过使用dcache cmd禁用dcache,运行测试的时间增加了三倍。我在相同的硬件上在Linux上尝试了一个类似的简单测试,缓存可以使性能提高15倍以上。所以这一定不是硬件问题


总之,我发现缓存在某种程度上可以工作,但不能完全工作。这可能是一个配置问题。有什么理论可以解释我的发现吗?如何继续调试。。。谢谢

让我自己回答吧

Uboot中的代码有点误导。。。它运行

设置\u节\u数据缓存(i,数据缓存\u写回\u写回)

但在检查MMU后,发现内存类型设置为设备