arm exynos4412平台mmu配置以及的簡單建立.
1.mmu的全稱是Memory Management Unit(記憶體管理單元)
2.mmu所在位置.mmu再arm核心.他不是一個外設,他是arm核心的的一部分.
3.為什麼要使用mmu,由于在多任務的作業系統其中,程序A。B,C都可能使一段地
D,為了儲存他們訪問的不是同一個實體位址,我們給每一個程序4G的虛拟位址空間
然後使用,怎樣使用mmu來轉化虛拟位址空間和實體位址空間之間的相應關系,
這個轉換關系被稱為頁表,再每一個程序中都儲存了一個程序特有的頁表,
為了保證他們的實體位址不會反複,這些虛拟位址會被映射不同的實體位址段.
4.mmu工作原理:用來控制記憶體的訪問權限.
CP15 協處理器的c3寄存器
DACR, Domain Access Control Register, VMSA
DDI0406C_arm_architecture_reference_manual.pdf P1541
mmu一共同擁有16個域,cp15中的32個位,每兩個位表示一個域。用來控制記憶體
訪問權限.
0b00 No access. Any access to the domain generates a Domain fault.
//假設cp15設定的是0b00那麼被映射的區域步可訪問.
0b01 Client. Accesses are checked against the permission bits in the
translation tables.
//須要檢查權限才幹訪問.
0b10 Reserved, effect is UNPREDICTABLE .
//保留
0b11 Manager. Accesses are not checked against the permission bits in
the translation tables.
//不須要檢查權限.就能夠訪問記憶體.
5.cp15協處理器,的寄存器c2的值用來儲存頁表的實體位址.
ttb DDI0406C_arm_architecture_reference_manual.pdf P1711
MRC p15, 0, <Rt>, c2, c0, 1 ; Read 32-bit TTBR1 into Rt
MCR p15, 0, <Rt>, c2, c0, 1 ; Write Rt to 32-bit TTBR1
它用來儲存頁表的實體首位址.以下是mcr的文法.
MCR指令将ARM處理器的寄存器中的資料傳送到協處理器的寄存器中。假設協處理器不能成功地運作該操作。将産生沒有定義的指令異常中斷。
指令的文法格式:
MCR{ <cond>} p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_1>}
MCR2 p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_2>}
其中,<cond>為指令運作的條件碼。當<cond>忽略時指令為無條件運作。MCR2中。<cond>為Ob1111,指令為無條件運作指令。
<opcode_1>為協處理器将運作的操作的操作碼。對于CP15協處理器來說。 <opcode_1>永遠為0b000,當<opcode_1>不為0b000時,該指令操作結果不可預知。
<Rd>作為元寄存器的ARM寄存器,其值被傳送到得協處理器寄存器中。
<Rd>不能為PC,當其為PC時,指令操作結果不可預知。