arm mmu

来源:互联网 发布:平板产品展示软件 编辑:程序博客网 时间:2024/05/18 01:58

一个两级页表集合存储在内存中用来控制地址转换,权限检查,内存区域属性。

MMU使用一个转换查找缓冲(TLB)来缓存页表. 地址转换映射可分为页表映射和区域映射。

  * 大页映射

  * 小页映射

  * 极小页映射

  * 段(section) 映射

段映射只要一级转换, 页映射需要2级转换.

段描述符:  提供1M内存块的基址, 即一个描述符描述1M的内存空间.

bits 31........................20    19.....12  11 10  9  8...........5  4  3  2  1  0

  Section base address      SBZ        AP     0   Domain  1  C  B  1  0

Bit[1:0] 表示描述符类型: 10=段描述符,  01=粗页描述符, 10=小页描述符, 00=错误

1. ARM的mmu权限设置由描述符中的AP字段和DOMAIN字段以及DOMAIN寄存器组合描述的.


2. DOMAIN(CP15 c3)寄存器提供了16个域(一个域占2bit),  每个域可以有3种权限可供选择:

    ==00 : 没有访问权限

    ==01 : 访问时检查权限(检查section或者page描述符的AP字段 --- client mode)

    ==10 :  Reserved

    ==11 : 不检查访问权限(kernel mode)

 读写domain寄存器操作如下:

MRC p15, 0, <Rd>, c3, c0, 0 ; read domain access permissions
MCR p15, 0, <Rd>, c3, c0, 0 ; write domain access permissions