天天看點

mmu介紹

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時,指令操作結果不可預知。      

繼續閱讀