专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 驱动开发

物理地址如何映射大容量的内存

发布时间:2010-06-14 17:33:04 文章来源:www.iduyao.cn 采编人员:星星草
物理地址怎么映射大容量的内存?
一块SOC芯片,它的物理地址分配中有一大部分留给了内存,一部分留给了寄存器等,是这样的么?
如果内存很大,那么怎么实现有限的物理地址映射大容量内存的呢?这部分地址其实是对应内存控制器的么?而具体的实现是靠控制器完成?

------解决方案--------------------
一块SOC芯片,它的物理地址分配中有一大部分留给了内存,一部分留给了寄存器等,是这样的么?

是这样的。
通常,CPU内部会集成很多的模块,操作这些模块就需要寄存器。可能的实现是,将这些模块的寄存器都集中在一起放在一块连续的地址空间中。

对于内存,它也有相应的控制器模块。
该模块就会定义内存的一些属性,比如 片选CS是哪一个,base address 是多少,size 是多少。 具体的时序信息等等。

如果内存很大,那么怎么实现有限的物理地址映射大容量内存的呢?这部分地址其实是对应内存控制器的么?而具体的实现是靠控制器完成?

内存很大? 
如果大过了SOC分配给内存的地址空间,那肯定不行的了。可能有一些内存的空间会牺牲掉。
内存的大小选型,一定要满足 SOC分配给内存的地址空间,否则,即使很大,也是浪费的。

内存控制器是一片起控制作用的寄存器区域。

内存的地址空间和内存控制器的地址空间,是两码事,是独立开的两个区域。
------解决方案--------------------
一一对应的,
具体对应方式,就看你启用的是 page 访问方式,还是 bta 块地址翻译方式,
可能还存在其他的虚拟地址到物理地址的映射方式
------解决方案--------------------
1、通常我们的操作系统都是32bit的,也就是4G最大的有效地址;
2、在外设(Local Bus,UART和SPI寄存器等)占掉一部分后,按照一一
对应的地址翻译,怎么都到不了4G的内存;
3、通常的做法是采用滑窗的方案,即根据访问,动态配置有效地址和物理地址
之间的映射;
4、当然,前天是你的CPU至少得支持大于32-bit的总线,比如36bit、64bit等
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: