ARM中MMU的作用

2021-07-07 05:03:57 字數 873 閱讀 2856

⑴.mmu的使用

mmu是儲存器管理單元的縮寫,是用來管理虛擬記憶體系統的器件。 mmu通常是cpu的一部分,本身有少量儲存空間存放從虛擬位址到實體地址的匹配表。此表稱作tlb(轉換旁置緩衝區)。所有資料請求都送往mmu,由 mmu決定資料是在ram內還是在大容量儲存器裝置內。如果資料不在儲存空間內,mmu將產生頁面錯誤中斷。

mmu的兩個主要功能是:

1.將虛位址轉換成實體地址。

2.控制儲存器訪問允許。mmu關掉時,虛位址直接輸出到物理位址匯流排。

在實踐中,使用mmu解決了如下幾個問題:

①使用dram作為大容量儲存器時,如果dram的實體地址不連續,這將給程式的編寫除錯造成極大不便,而適當配置mmu可將其轉換成虛擬位址連續的空間。

②arm核心的中斷向量表要求放在0位址,對於rom在0位址的情況,無法除錯中斷服務程式,所以在除錯階段有必要將可讀寫的儲存器空間對映到0位址。

③系統的某些位址段是不允許被訪問的,否則會產生不可預料的後果,為了避免這類錯誤,可以通過mmu匹配表的設定將這些位址段設為使用者不可訪問型別。

啟動程式中生成的匹配表中包含位址對映,儲存頁大小(1m,64k,或4k)以及是否允許訪問等資訊。

例如:目標板上的16兆dram的實體地址區間為0xc000,0000~0xc07f,ffff;0xc100,0000~0xc17f,ffff;16兆rom的虛擬位址區間為:0x0000,0000~0x00ff,ffff。匹配表配置如下:

可以看到左邊是連續的虛擬位址空間,右邊是不連續的實體地址空間,而且將dram對映到了0位址區間。 mmu通過虛擬位址和頁面表位置資訊,按照轉換邏輯獲得對應實體地址,輸出到位址匯流排上。

應注意到的是使能mmu後,程式繼續執行,但是對於程式設計師來說程式計數器的指標已經改變,指向了rom所對應的虛擬位址。

ARM中MMU之位址轉換

第一次發帖略微有點激動,有不足的地方還請各位大神指教。最近看了看mmu,找了好多資料,看了好多博文終於稍微清楚了一點,現在我把自己理解的內容總結一下 首先我來說一下mmu 的作用,mmu就是負責虛擬位址 virtual address 轉化成實體地址 physical address 下面我來說一下...

ARM記憶體讀取與MMU

簡介 儲存器管理單元,mmu。通過位址對映,使需要執行在位址連續空間的軟體可執行在不連續的物理儲存器中。虛擬位址空間分成若干大小固定的頁,實體地址空間也劃分為同樣大小的頁。頁表是一張虛擬位址和實體地址的對應表,頁表儲存在記憶體儲器中。使用協處理器cp15的暫存器c2儲存頁表在記憶體中的起始位址。可以...

ARM中mmu的對映原理與配置步驟

在mmu啟動之前 1.將ttb放置在cp15的c2的高18位 注 構建一級頁表是對所選的對映進行設定,配置domain ap 等 有關mmu的轉換過程 我的理解 1 虛擬位址中的前12位位址他可以反映本次描述符在一級頁表中的索引 即ttb 前12位位址 2 對於頁對映 一級頁表的前12位存放二級頁表...