ARM的存儲管理單元MMU_第1頁
ARM的存儲管理單元MMU_第2頁
ARM的存儲管理單元MMU_第3頁
ARM的存儲管理單元MMU_第4頁
全文預覽已結(jié)束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

ARM的儲存管理單元MMUARM的儲存管理單元MMUARM的儲存管理單元MMU2021-01-1922:06:08MMU供給的一個重點服務是,能使各個任務作為獨立的程序在其自己的私有儲存空間運行.地點變換過程同意運轉(zhuǎn)的多個程序使用同樣的虛構(gòu)地點,而各自儲存在物理儲存器的不一樣地點.地區(qū)能夠是活躍的,也能夠是睡眠的:活躍地區(qū)包含目前系統(tǒng)正在使用的代碼或數(shù)據(jù);睡眠地區(qū)包含目前不使用,但可能在短時間內(nèi)變成活躍的代碼或數(shù)據(jù).睡眠地區(qū)是被保護的,所以目前正在運轉(zhuǎn)的任務是不可以接見的.MPU和MMU的主要差別是,MMU中增添了額外的硬件,以支持虛存.一個重定位寄存器只好變換一塊儲存空間.這塊儲存空間的大小由虛構(gòu)地點的偏移量部分所占的位數(shù)所決定.ARM的MMU中暫時寄存變換數(shù)據(jù)的一組重定位寄存器其實是一個由64個重定位寄存器構(gòu)成的全相聯(lián)cache.這個cache就是變換旁路緩沖器--TLB.TLB緩存近來被接見的頁的變換數(shù)據(jù).MMU還使用主存中的表來寄存描繪系統(tǒng)頂用到的虛構(gòu)儲存器映照數(shù)據(jù),這些變換數(shù)據(jù)的表就是頁表.頁表中的每個項代表了將虛構(gòu)儲存器的一個頁變換到物理儲存器的一個頁幀所需要的全部信息.在MMU中,地區(qū)被定義為一組頁表的會合,并作為虛存中的連續(xù)頁完整由軟件控制.除了L1一級頁表外,全部其余的頁表都代表虛存的1MB空間.假如一個地區(qū)的大小大于1MB或許它越過頁表的1MB界限地點,那么就一定使用一組頁表來描繪這個地區(qū).頁表能夠駐留在儲存器中,而不用映照到MMU硬件.當在2個應用程序任務間實現(xiàn)上下文切換時,辦理器其實要發(fā)生多次上下文切換從用戶模式任務切換到內(nèi)核模式任務,以辦理準備運轉(zhuǎn)下一個應用程序任務時的上下文數(shù)

.它先據(jù)的挪動;而后,它從內(nèi)核模式任務切換到下一個上下文的新的用戶模式任務.MMU在變換一個地點時失敗,就會產(chǎn)生一此中斷異樣.MMU只有在變換失敗,權限錯誤和域錯誤時,才會中斷.L1住頁表包含2種種類的頁表項:保存指向二級頁表開端地點指針的頁表項和保存用于變換1MB頁的頁表項.L1頁表也稱為段頁表.當L1頁表作為頁目錄時,其頁表項包含的是1MB虛構(gòu)空間的L2粗頁表或L2細頁表指針;當L1頁表用于變換一個1MB的段時,其頁表項包含的是物理儲存器中1MB頁幀的首地點.目錄頁表項和1MB的段頁表項能夠共存于L1主頁表.CP15:c2寄存器保存變換表基地點TTB--指向L1主頁表在虛存中的地點.TLB只支持兩種種類的命令:消除TLB和鎖定TLB中的變換數(shù)據(jù).儲存器接見時,MMU將虛構(gòu)地點的一部分與TLB中的全部值進行比較.假如TLB中已有所要的變換數(shù)據(jù),即為一次TLB命中,則由TLB供給物理地點的變換數(shù)據(jù).假如TLB中不存在有效的變換數(shù)據(jù),即為一次TLB無效,則MMU會由硬件自動辦理TLB無效,經(jīng)過主存中的頁表搜尋有效的變換數(shù)據(jù),并將其裝入TLB的64行的一行.假如TLB中的某一行是鎖定的,則當TLB消除命令發(fā)出時,它仍舊保存在TLB中.ARM

的儲存保護單元

MPU2021-01-1922:03:38在受保護的系統(tǒng)中,主要有兩類資源需要監(jiān)督:儲存器系統(tǒng)和外頭設施.儲存器中對區(qū)域的接見能夠是讀/寫,只讀或不行接見,鑒于當時的辦理器模式--管理模式或用戶模式,還有一些附帶的權限.地區(qū)還有控制cache和寫緩沖器屬性的cache寫策略.當辦理器接見主存的一個地區(qū)時,MPU比較該地區(qū)的接見權限屬性和當時的辦理器模式.假如懇求切合地區(qū)接見標準,則MPU同意內(nèi)核讀/寫主存;假如儲存器懇求致使儲存器接見違例,則MPU產(chǎn)生一個異樣信號.地區(qū)與內(nèi)核是馮.諾依曼構(gòu)造仍是哈佛構(gòu)造沒關.每個地區(qū)經(jīng)過0~7的號碼來表記和引用.地區(qū)的屬性以下:地區(qū)能夠互相重疊;每個地區(qū)都分派有一個優(yōu)先級,該優(yōu)先級與分派地區(qū)的權限沒關;當?shù)貐^(qū)重疊時,擁有最高優(yōu)先級的地區(qū)的屬性能夠覆蓋其余地區(qū)的屬性,優(yōu)先級僅作用于重疊部分的地點;地區(qū)的開端地點一定是其大小的倍數(shù);地區(qū)的大小能夠是4KB~4GB之間的任何2的乘冪;接見所定義地區(qū)外的儲存器將產(chǎn)生異樣.假如是內(nèi)核預取指令,則MPU產(chǎn)生預取指令中斷異樣;假如是儲存器數(shù)據(jù)懇求,則產(chǎn)生數(shù)據(jù)中斷異樣.在啟用儲存器保護單元以前,一定起碼定義一個數(shù)據(jù)地區(qū)和一個指令地區(qū),并且一定在啟用cache和寫緩沖器以前(或同時)啟用儲存器保護單元.控制器經(jīng)過設置CP15的主寄存器c1~5來配置MPU.經(jīng)過配置寄存器c2和c3來設置地區(qū)的cache和寫緩沖器的屬性,寄存器c5控制地區(qū)的接見權限,在寄存器c6里有8個或16個次寄存器用來定義每個地區(qū)的大小和地點.初始化MPU,cache和寫緩沖器需要以下步驟:使用CP15:c6來定義指令和數(shù)據(jù)地區(qū)的大小和地點使用CP15:c5來設置每個地區(qū)的接見權限(3)分別使用CP15:c2和CP15:c3來設置每個地區(qū)的cache和寫緩沖器屬性(4)使用CP15:c1來使能cache和MPU每個內(nèi)核有3個CP15寄存器用來控制地區(qū)的cache和寫緩沖器屬性.此中CP15:c2:c0:0和CP15:c2:c0:1兩個寄存器保存D-cache和I-cache地區(qū)屬性;第三個寄存器,CP15:c3:c0:0用于保存地區(qū)寫緩沖器屬性,并應用于儲存器數(shù)據(jù)地區(qū).當配置數(shù)據(jù)地區(qū)時,地區(qū)的cache位和寫緩沖器位一同決定地區(qū)的策略.寫緩沖器位有2個用途:使能和禁止地區(qū)的寫緩沖器和設置地區(qū)的cache策略.地區(qū)的cache位控制寫緩沖器位的作用.當cache位為0時,寫緩沖器位為1,則使能寫緩沖器;寫緩沖器位為0,則禁用寫緩沖器.當cache位為1時,cache和寫緩沖器都被使能,此時寫緩沖器位決定cache策略.若寫緩沖器位為0,則地區(qū)使用直寫策略;若寫緩沖器位為1,則地區(qū)使用回寫策略.S3C2440從sd卡啟動wince2021-04-1615:47:25經(jīng)過一周的時間終于在s3c2440上把sdboot給跑起來了。整個任務是在已有的bootloader上(用usb線從pc下載的方式)改正以支持直接從sd卡上拷貝nk.nb0文件到內(nèi)存并啟動。相關sd卡驅(qū)動和fatfs的實現(xiàn)用了3個文件來實現(xiàn)。sdboot.c為sd的驅(qū)動(可理解為pdd)層,主要實現(xiàn)一些對sd控制器的配置以及一些基本sd命令的實現(xiàn)和對sd卡的操作。sdmmc.c實現(xiàn)了從sd卡讀取nk并跳到內(nèi)存去運轉(zhuǎn)的代碼(基本能夠理解為sd驅(qū)動的mdd層)。sdfat.c文件就是實現(xiàn)fatfs的。mdd層經(jīng)過fatfs來對pdd層操作以實現(xiàn)讀取文件。在整個過程中碰到了好多問題,此刻列舉以下:1)sd卡初始化問題配置gpio相關sd的功能:SDCMD,SDDAT[3:0]。使能CLKCON中的SDI位。時鐘以及計算公式:SDIPRE=PCLK/(CLK)-1;INICLK=300000;SDCLK=24000000;MMCCLK=15000000cmd0-cmd55-cmd41-cmd2-cmd3-cmd7-cmd6-cmd172)對sd卡操作問題SD卡包含:一個表記寄存器CID,一個相應地點寄存器RCA,一個其余參數(shù)寄存器對sd卡的操作是驅(qū)動經(jīng)過sdcontroller來發(fā)相應的命令以達到讀寫等操作的:發(fā)喪命令經(jīng)過SDICmdCon[7:0]的除了開始2bit:CmdIndex擱置要發(fā)送的命令號;SDICmdCon[8]開始發(fā)喪命令來達成的。檢測卡的插入,直接用中斷引腳的電平來判斷。判斷插入的卡是不是sd卡,用命令cmd55和cmd41,由于mmc卡對cmd55不做回應。命令9就是獲得sd卡中csd寄存器的值的,該值包含好多sd卡的信息,此中就有卡的容量。這個值在sd卡接收到cmd9以后會以response的形式寄存在sd控制器的ResponseRegister[0,1,2,3]中。在履行cmd9,cmd10等這樣的命令的時候,卡的狀態(tài)應當是不選中的,或直接在履行它們以前發(fā)送cmd7(0)不選中卡,否則的話會timeout。

sdSDI用cmd17來讀取單個block的數(shù)據(jù),該命令要帶地點參數(shù)(該參數(shù)經(jīng)過cmd3命令來獲得),而后依據(jù)SDIDSTA和SDIFSTA狀態(tài)值來從sd控制器的SDIDAT寄存器中讀出要讀的數(shù)據(jù)。該命令與cmd9相反,在履行它以前要選中卡。讀完一個block以后要做一些善后工作,為下次讀取做好準備,否則的話checkcmdend就要向來循環(huán)了。由于用的是每次都讀一個block,并地點要以block對齊,這樣就要考慮要讀取的地點是不是blo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論