在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;
}