嵌入式开发者社区

标题: 关于内存可缓存性的疑问 [打印本页]

作者: 李思凝    时间: 2018-8-22 16:01
标题: 关于内存可缓存性的疑问
在贵司提供的“缓存”视频教程及例程中,提到了有关配置内存可缓存性的问题,在StarterWare中其对应函数为“CacheEnableMAR(unsigned int baseAddr, unsigned int byteSize)”,但是没有对其进行展开说明。我对该操作的理解有些疑问。我对它的理解是这样的:
内存可缓存性实际上是在内存DDR2中划定一块区域(其起始位置为baseAddr、区域长度为byteSize),只有存储在该区域的变量才能被缓存控制器读取并存储到缓存(L1、L2)中;而在该区域以外的变量则不会被缓存控制器访问并读取,不会出现在L1、L2中,而是仅存在于DDR2里。
因此,在不考虑其他主外设对DDR2中数据造成修改的情况下,或者使用CacheInv排除了某些在DDR2中会被其他主外设修改的变量带来的缓存一致性问题的情况下,可将DDR2的全部空间都配置为可缓存(baseAddr为0xC0000000,byteSize为0x08000000),就像视频和例程代码中演示的那样。但是如果有更高级的要求和操作,也可以自行定义可以被缓存的DDR2空间范围。

请问我的理解正确吗?如果不正确(或不完全正确),那配置内存可缓存性的目的及其作用原理是怎样的?

谢谢!

作者: 广州创龙廖工    时间: 2018-8-23 18:08
您好,在我们的视频教程中,有相关说明,是需要参考数据手册,灰色的是固定值,不能修改成缓存,而白色的,才是可以配置成缓存的
而且,也是需要,对照内存映射表,判断RAM或者DDR,对应的地址,请您参考。

[attach]3551[/attach]

[attach]3552[/attach]

[attach]3554[/attach]
[attach]3553[/attach]




欢迎光临 嵌入式开发者社区 (https://51ele.net/) Powered by Discuz! X3.4