国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ARM的存儲管理單元MMU
ARM的存儲管理單元MMU2008-01-19 22:06:08
MMU提供的一個關鍵服務是,能使各個任務作為獨立的程序在其自己的私有存儲空間運行.地址轉換過程允許運行的多個程序使用相同的虛擬地址,而各自存儲在物理存儲器的不同位置.
區(qū)域可以是活躍的,也可以是睡眠的:活躍區(qū)域包含當前系統(tǒng)正在使用的代碼或數(shù)據;睡眠區(qū)域包含當前不使用,但可能在短時間內變?yōu)榛钴S的代碼或數(shù)據.睡眠區(qū)域是被保護的,因此當前正在運行的任務是不能訪問的.MPU和MMU的主要區(qū)別是,MMU中增加了額外的硬件,以支持虛存.
一個重定位寄存器只能轉換一塊存儲空間.這塊存儲空間的大小由虛擬地址的偏移量部分所占的位數(shù)所決定.ARM的MMU中臨時存放轉換數(shù)據的一組重定位寄存器實際上是一個由64個重定位寄存器組成的全相聯(lián)cache.這個cache就是轉換旁路緩沖器--TLB.TLB緩存最近被訪問的頁的轉換數(shù)據.MMU還使用主存中的表來存放描述系統(tǒng)中用到的虛擬存儲器映射數(shù)據,這些轉換數(shù)據的表就是頁表.頁表中的每個項代表了將虛擬存儲器的一個頁轉換到物理存儲器的一個頁幀所需要的所有信息.
在MMU中,區(qū)域被定義為一組頁表的集合,并作為虛存中的連續(xù)頁完全由軟件控制.除了L1一級頁表外,所有其他的頁表都代表虛存的1MB空間.如果一個區(qū)域的大小大于1MB或者它跨過頁表的1MB邊界地址,那么就必須使用一組頁表來描述這個區(qū)域.頁表可以駐留在存儲器中,而不必映射到MMU硬件.
當在2個應用程序任務間實現(xiàn)上下文切換時,處理器其實要發(fā)生多次上下文切換.它先從用戶模式任務切換到內核模式任務,以處理準備運行下一個應用程序任務時的上下文數(shù)據的移動;然后,它從內核模式任務切換到下一個上下文的新的用戶模式任務.
MMU在轉換一個地址時失敗,就會產生一個中止異常.MMU只有在轉換失敗,權限錯誤和域錯誤時,才會中止.
L1住頁表包含2種類型的頁表項:保存指向二級頁表起始地址指針的頁表項和保存用于轉換1MB頁的頁表項.L1頁表也稱為段頁表.當L1頁表作為頁目錄時,其頁表項包含的是1MB虛擬空間的L2粗頁表或L2細頁表指針;當L1頁表用于轉換一個1MB的段時,其頁表項包含的是物理存儲器中1MB頁幀的首地址.目錄頁表項和1MB的段頁表項可以共存于L1主頁表.CP15:c2寄存器保存轉換表基地址TTB--指向L1主頁表在虛存中的位置.
TLB只支持兩種類型的命令:清除TLB和鎖定TLB中的轉換數(shù)據.存儲器訪問時,MMU將虛擬地址的一部分與TLB中的所有值進行比較.如果TLB中已有所要的轉換數(shù)據,即為一次TLB命中,則由TLB提供物理地址的轉換數(shù)據.如果TLB中不存在有效的轉換數(shù)據,即為一次TLB失效,則MMU會由硬件自動處理TLB失效,通過主存中的頁表搜索有效的轉換數(shù)據,并將其裝入TLB的64行的一行.如果TLB中的某一行是鎖定的,則當TLB清除命令發(fā)出時,它仍然保留在TLB中.
ARM的存儲保護單元MPU2008-01-19 22:03:38
在受保護的系統(tǒng)中,主要有兩類資源需要監(jiān)視:存儲器系統(tǒng)和外圍設備.存儲器中對區(qū)域的訪問可以是讀/寫,只讀或不可訪問,基于當時的處理器模式--管理模式或用戶模式,還有一些附加的權限.區(qū)域還有控制cache和寫緩沖器屬性的cache寫策略.當處理器訪問主存的一個區(qū)域時,MPU比較該區(qū)域的訪問權限屬性和當時的處理器模式.如果請求符合區(qū)域訪問標準,則MPU允許內核讀/寫主存;如果存儲器請求導致存儲器訪問違例,則MPU產生一個異常信號.
區(qū)域與內核是馮.諾依曼結構還是哈佛結構無關.每個區(qū)域通過0~7的號碼來標識和引用.區(qū)域的屬性如下:
(1)區(qū)域可以相互重疊;
(2)每個區(qū)域都分配有一個優(yōu)先級,該優(yōu)先級與分配區(qū)域的權限無關;
(3)當區(qū)域重疊時,具有最高優(yōu)先級的區(qū)域的屬性可以覆蓋其他區(qū)域的屬性,優(yōu)先級僅作用于重疊部分的地址;
(4)區(qū)域的起始地址必須是其大小的倍數(shù);
(5)區(qū)域的大小可以是4KB~4GB之間的任何2的乘冪;
(6)訪問所定義區(qū)域外的存儲器將產生異常.如果是內核預取指令,則MPU產生預取指令中止異常;如果是存儲器數(shù)據請求,則產生數(shù)據中止異常.
在啟用存儲器保護單元之前,必須至少定義一個數(shù)據區(qū)域和一個指令區(qū)域,而且必須在啟用cache和寫緩沖器之前(或同時)啟用存儲器保護單元.控制器通過設置CP15的主寄存器c1~5來配置MPU.通過配置寄存器c2和c3來設置區(qū)域的cache和寫緩沖器的屬性,寄存器c5控制區(qū)域的訪問權限,在寄存器c6里有8個或16個次寄存器用來定義每個區(qū)域的大小和位置.初始化MPU,cache和寫緩沖器需要以下步驟:
(1)使用CP15:c6來定義指令和數(shù)據區(qū)域的大小和位置
(2)使用CP15:c5來設置每個區(qū)域的訪問權限
(3)分別使用CP15:c2和CP15:c3來設置每個區(qū)域的cache和寫緩沖器屬性
(4)使用CP15:c1來使能cache和MPU
每個內核有3個CP15寄存器用來控制區(qū)域的cache和寫緩沖器屬性.其中CP15:c2:c0:0和CP15:c2:c0:1兩個寄存器保存D-cache和I-cache區(qū)域屬性;第三個寄存器,CP15:c3:c0:0用于保存區(qū)域寫緩沖器屬性,并應用于存儲器數(shù)據區(qū)域.當配置數(shù)據區(qū)域時,區(qū)域的cache位和寫緩沖器位一起決定區(qū)域的策略.寫緩沖器位有2個用途:使能和禁止區(qū)域的寫緩沖器和設置區(qū)域的cache策略.區(qū)域的cache位控制寫緩沖器位的作用.當cache位為0時,寫緩沖器位為1,則使能寫緩沖器;寫緩沖器位為0,則禁用寫緩沖器.當cache位為1時,cache和寫緩沖器都被使能,此時寫緩沖器位決定cache策略.若寫緩沖器位為0,則區(qū)域使用直寫策略;若寫緩沖器位為1,則區(qū)域使用回寫策略.
S3C2440從sd卡啟動wince2008-04-16 15:47:25
經過一周的時間終于在s3c2440上把sdboot給跑起來了。整個任務是在已有的bootloader上(用usb線從pc下載的方式)修改以支持直接從sd卡上拷貝nk.nb0文件到內存并啟動。    有關sd卡驅動和fat fs的實現(xiàn)用了3個文件來實現(xiàn)。sdboot.c為sd的驅動(可理解為pdd)層,主要實現(xiàn)一些對sd控制器的配置以及一些基本sd命令的實現(xiàn)和對sd卡的操作。sdmmc.c實現(xiàn)了從sd卡讀取nk并跳到內存去運行的代碼(基本可以理解為sd驅動的mdd層)。sdfat.c文件就是實現(xiàn)fat fs的。mdd層通過fatfs來對pdd層操作以實現(xiàn)讀取文件。
在整個過程中遇到了很多問題,現(xiàn)在列舉如下:
1)sd卡初始化問題
配置gpio有關sd的功能:SDCMD, SDDAT[3:0]。
使能CLKCON中的SDI位。
時鐘以及計算公式:SDIPRE   = PCLK/(CLK)-1;INICLK=300000;SDCLK=24000000; MMCCLK= 15000000
cmd0-cmd55-cmd41-cmd2-cmd3-cmd7-cmd6-cmd17
2)對sd卡操作問題
SD卡包括:一個標識寄存器CID,一個相應地址寄存器RCA,一個其他參數(shù)寄存器
CSD。
對sd卡的操作是驅動通過sd controller來發(fā)相應的命令以達到讀寫等操作的:發(fā)送命令通過SDICmdCon[7:0]的除了開始2bit:CmdIndex放置要發(fā)送的命令號;SDICmdCon[8]開始發(fā)送命令來完成的。
檢測卡的插入,直接用中斷引腳的電平來判斷。
判斷插入的卡是否是sd卡,用命令cmd55和cmd41,因為mmc卡對cmd55不做回應。
命令9就是獲取sd卡中csd寄存器的值的,該值包括很多sd卡的信息,其中就有sd卡的容量。這個值在sd卡接收到cmd9之后會以response的形式存放在sd控制器的SDI Response Register[0,1,2,3]中。在執(zhí)行cmd9,cmd10等這樣的命令的時候,卡的狀態(tài)應該是不選中的,或直接在執(zhí)行它們之前發(fā)送cmd7(0)不選中卡,不然的話會timeout。
用cmd17來讀取單個block的數(shù)據,該命令要帶地址參數(shù)(該參數(shù)通過cmd3命令來獲?。?,然后根據SDIDSTA和SDIFSTA狀態(tài)值來從sd控制器的SDIDAT寄存器中讀出要讀的數(shù)據。該命令與cmd9相反,在執(zhí)行它之前要選中卡。讀完一個block之后要做一些善后工作,為下次讀取做好準備,不然的話checkcmdend就要一直循環(huán)了。因為用的是每次都讀一個block,并地址要以block對齊,這樣就要考慮要讀取的地址是否是block對齊的,長度是否夠一個block。
SDIDCON這個數(shù)據控制寄存器也很重要,一些對數(shù)據的操作形式就是在這里設置的。
3)fat文件系統(tǒng)問題
根據MBR找到分區(qū)表,根據分區(qū)表找到該分區(qū)MBR[446B+4個分區(qū)表(每個16B)+2B結束符)
分區(qū)表中的第9-12字節(jié)為該分區(qū)的啟始地址(單位沒sector),第13-16字節(jié)為分區(qū)的長度(單位也是sector)
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
s3c2440硬件學習筆記----內存管理單元MMU
MIPS的內存映射
ARM920T虛擬地址原理分析及實現(xiàn)
ARMv7-A 處理器窺探
MMU結構以及工作原理
淺談Cache和MMU
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服