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
|