在mmu启动之前;
1.将ttb放置在cp15的c2的高18位
2.在虚拟地址映射表基地址位置构建一级页表:ttb的开始的16K字节空间,可分2^16=4096个映射描述符(我的理解是有四种不同的映射,可分4096个映射方式)
注:构建一级页表是对所选的映射进行设置,配置domain ap 等;
有关mmu的转换过程:(我的理解)
1 虚拟地址中的前12位地址他可以反映本次描述符在一级页表中的索引(即ttb+前12位地址)
2 对于页映射 一级页表的前12位存放二级页表的基址,二级页表中的相对应的描述有虚拟地址中的
12-19位(即二级页表的基址+虚拟地址中的对应的二级页表的索引)
对于段映射前12位是物理基址,后20位是一次映射的大小,也就是偏移量
3 若要映射比1M(偏移量)大的数据,则要进行多次映射,一次1M;
比如映射64M的数据,一次映射1M,则程序可以是:
vaddr=0xb0000000 //虚拟地址
paddr = 0x30000000; //物理地址
while(vaddr<=0xb3e00000)
{
*(ttb+(vaddr<<20))=(paddr&0xfff00000)|mmu_secdsc;
vaddr+= 100000;
paddr+= 100000;
}