ARM的MMU--类比地址问题

来源:互联网 发布:外国人淘宝购物 编辑:程序博客网 时间:2024/05/16 15:02

1. 地址空间:虚拟地址VA,转换后地址(线性地址)MVA,物理地址PA。

2. VA -> MVA是硬件自动完成,参见《手册》MMU部分,具体硬件应该是ARM CPU内部硬件,这个后面找到ARM CPU结构图了才好说。MVA -> PA是通过MMU了,这里可以设置。

注意这里只有低32MB才需要转换,这样做可能是考虑进程使用32MB空间的情况比较多吧。

3. VA是ARM CPU地址线发出的地址,通过《手册》所示的硬件转换成MVA,通过总线(参考OCP bus)发给MMU。MMU将MVA转换为PA之后发给挂在MMU下面的设备(如FLASH、DRAM、EEPROM)。

4. 难道有设备不在MMU管理之下吗?至少我的板子有,一般是低速外设(挂在LX bus,而LX bus又是OCP bus分频出来的),典型的如UART。


5. MMU部分code分析要点:

·看LDS文件可以看到编译时候的load view= exec view;烧写到flash中的基地址由链接器给出。由于ARM上电PC=0,所以BASE地址为0,包含了head.o和init.o。在start.s中有函数copy_2th_to_sdram用于code搬运。

·注意直到load pc之前全部是在flash中。

·LDS文件看出:first段load/exec都在地址0,其中load是指在生成的image中存在的位置,exec是编译过程中符号地址base为0;second段load在2048B处,这是在image中的位置,当然也可以顺着first放下去,但是这样二阶段搬运code的时候的地址就不好计算了,exec地址=0xB0004000这个是符号base地址。当然这里符号base在0xB0004000是想运行时候在内存的这个位置,但是能不能到这个位置还是要看搬运code如何做了。

0 0
原创粉丝点击