全部博文(153)
分类:
2009-09-12 17:12:35
8 arm支持的存储块大小有以下几种:
●段:大小是
●大页:大小是64KB
●小页:大小是4KB
●极小页:大小是1KB
在mmu中通过两级页表实现上述地址映射:
一级页表中包含有以段为单位的地址变换条目和指向二级页表的指针。(因此如果需要以段位映射只需要一级页表)
二级页表中包含以大页和小页为单位的地址变换条目。
9 mmu的变换蛮复杂的,这里先用一级页表的转换为例:
先要通过cp15的c2寄存器(存放了页表基地址)和虚拟地址进行映射地址转换得到一级描述符地址,然后再通过物理地址的高12位、AP部分、C,B控制位、得到一级描述符,再将一级描述符存放在一级描述符地址中。
注意:一级描述符地址的最后两位指定了该一级描述符的类型。杜春雷书p180页,不过讲的很晦涩,没看懂,在我们一级页表的代码中用了00。
一级描述符的最后两位是一级描述符的类型标识,为0b10时该一级描述符为段描述符。
一级描述符地址的最后两位和一级描述符的最后两位有点混淆???!
以下是AP的含义:(R,S是c1寄存器的控制位)
AP S R Privileged permissions User permissions
0b00 0 0 不能访问 不能访问
0b00 1 0 只读 不能访问
0b00 0 1 只读 只读
0b00 1 1 不可预测 不可预测
0b01 X X 读/写 不能访问
0b10 X X 读/写 只读
0b11 X X 读/写 读/写
以下是CB的含义:
C为1时表示使能cache
B为1时表示使能写缓存
C(高速缓存)和B(缓冲)位被用来控制高速缓存和写缓冲,并决定是否高速缓存。