今天小看了会ARM的内存管理单元MMU,对从虚拟地址转换到物理地址更进一步理解了。
当我们运行大程序时,往往会内存不够用,这个时候,就需要用到ARM的MMU了。
MVA为虚拟地址,PA为物理地址。
2410利用页表的方式使虚拟地址转换到物理地址。
转换过程大概是,从虚拟地址中的页表索引部分和基址找到段基址,然后从虚拟地址的段内地址部分和段基址一起组成一个描述符,由这个描述符就可以找到虚拟地址相应的物理地址。
上面只需要一级页表,假若需要二级页表,那么方法一样,不同的是虚拟地址中由2个级别的页表和段内地址组成的。由此找到二级页表中的描述符,再由描述符找到相应的物理地址。
假如MMU_TLB_BASE为基址地址,VIRTULADDR为虚拟地址,MMU_SECDESC_WB为描述符带CACHE和BUFFER的,MMU_SECDESC为描述符,PHYSICALADDR为物理地址。则转换方式如下:
*(MMU_TLB_BASE+VIRTULADDR>>20)=(PHYSICALADDR&0xfff00000)|MMU_SECDESC_WB则可以从虚拟地址映射到物理地址,关键在于理解描述的构造和用途。
再接再厉吧,太难了
阅读(580) | 评论(0) | 转发(0) |