关于物理地址与虚拟地址的理解 求教

[复制链接]
 楼主| sinc_mark 发表于 2014-4-14 15:01 | 显示全部楼层 |阅读模式
一个MCU的pdf文档,其中有一些内部模块的地址说明,类似如下:
address                              acronym              Register Descrition
0x01e2 7000h                    REVID                 .......
设备本身就只有128MB的内存,按我的理解,这个应该是虚拟地址,因为设备端没有这么大的物理地址来,不知道我这样理解是正确的吗?请指教!
 楼主| sinc_mark 发表于 2014-4-14 15:05 | 显示全部楼层
自己百度过,说物理地址就应该是芯片内部的总线的实际链接相对应,按这个说法,这个像是物理地址,但由于设备只有128MB的ROM ,64MB的RAM,现在很迷惑!求指导!
jplzl 发表于 2014-4-14 15:30 | 显示全部楼层
sinc_mark 发表于 2014-4-14 15:05
自己百度过,说物理地址就应该是芯片内部的总线的实际链接相对应,按这个说法,这个像是物理地址,但由于设 ...

内部ROM只有128M,并不影响内部模块的地址大于128M呀,如果是32BIT的MCU,一般都可以最大寻址4G的
能访问的最大地址数和地址总线的宽度相关咯
再找找其他地方,应该有整个MEMORY MAP的说明的,包括ROM,RAM,外设地址等
 楼主| sinc_mark 发表于 2014-4-14 15:53 | 显示全部楼层
jplzl 发表于 2014-4-14 15:30
内部ROM只有128M,并不影响内部模块的地址大于128M呀,如果是32BIT的MCU,一般都可以最大寻址4G的
能访问 ...

IC本身有MMU,是可以模拟4G的内存空间的,所以我才会想这个地址是虚拟地址,并且设备本身只有64MB的RAM..现在对物理地址和虚拟地址真的有点混了。。
jplzl 发表于 2014-4-14 16:08 | 显示全部楼层
sinc_mark 发表于 2014-4-14 15:53
IC本身有MMU,是可以模拟4G的内存空间的,所以我才会想这个地址是虚拟地址,并且设备本身只有64MB的RAM.. ...

这样说吧,地址大小和芯片的ROM,RAM大小在数量上是没有关系的
通常ROM或RAM地址范围只是MCU可访问地址范围内的一段而已
假设你这个MCU为一个ARM9吧,实际可访问地址就为4G
但实际上芯片制造商不会把这4G地址都用完
很可能的用法是:
起始的1M以内吧,用作ROM/RAM的映射,但实际的RAM可能只有32K
然后在4G的高处,也就是0xFFFF FFFF向下,分配个256M用于MCU的外设地址


物理地址:实际地址线能访问的
虚拟地址:物理地址经MMU转换后得到的地址

在上述假设中,写出来的地址都是物理地址,关闭MMU功能时,都可以直接用这个地址值访问相关寄存器
在开了MMU功能时,可根据MMU的设置,把这个RAM地址映射到一个地址,假如:
0x0000 0000 -> 0x0001 0000 MMU-REMAP
那,这个0x0000 0000是物理地址,在开启MMU后,再访问这个地址不是正确的
这个0x0001 0000是虚拟地址,开启MMU后,访问这个地址,即是访问物理地址0x0000 0000
lr2131 发表于 2014-4-15 10:45 | 显示全部楼层
不知道是不是有MMU
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:教育,就是把娃围起来,一期一期的收钱。 医疗,就是把命围起来,一天一天的收钱。

47

主题

301

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部