嵌入式开发者社区
标题:
关于内存可缓存性的疑问
[打印本页]
作者:
李思凝
时间:
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