In this model, the virtual address space is divided into two regions: • 0x0 -> 1<<(32-N) that TTBR0 controls • 1<<(32-N) -> 4GB that TTBR1 controls.
N的大小由TTBCR寄存器决定。0x0 -> 1<<(32-N)为用户空间,由TTBR0控制,1<<(32-N) -> 4GB为内核空间,由TTBR1控制。 N的大小与一级页表大小的关系图如下: 操作系统为用户空间的每个进程分配各自的页表,即每个进程的一级页表基址是不一样的,故当发生进程上下文切换时,TTBR0需要被存放当前进程的一级页表基址;TTBR1中存放的是内核空间的一级页表基址,内核空间的一级页表基址是固定的,故TTBR1中的基址值不需要改变。 4. u-boot中MMU初始化代码分析
u-boot中的MMU地址映射方式为段映射,映射粒度为1M,只用到一级页表。
start.S中的MMU初始化代码如下: 详见:https://www.cnblogs.com/tanghuimin0713/p/3917178.html