freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

系統(tǒng)引導(dǎo)程序的設(shè)計與實現(xiàn)(編輯修改稿)

2024-08-26 04:08 本頁面
 

【文章內(nèi)容簡介】 15個通用寄存器(R0-R14)、一個或者兩個狀態(tài)寄存器以及程序計數(shù)器(PC)。在所有的寄存器中,有些是各模式共用的同一個物理寄存器;有些寄存器是各模式自己擁有的獨立的物理寄存器。: ARM狀態(tài)下的寄存器組,通用寄存器R0-R7在所有的處理器模式下指的都是同一個物理寄存器,而對于R8-R12寄存器組,除了在快速中斷模式下有自己專有的物理寄存器,其它模式下也共有統(tǒng)一物理寄存器。R13寄存器對應(yīng)6個不同的物理寄存器,即除了前面提過的用戶模式與系統(tǒng)模式共用一個寄存器外,其它模式都有相應(yīng)的物理寄存器;一般地,R13寄存器在ARM中通常用作棧指針,在ARM指令中這只是一種習(xí)慣的用法,并沒有任何指令強制性的使用R13作為棧指針。R14寄存器又被稱為連接寄存器(Link Register,LR),在ARM體系中有下面兩種特殊的作用:★ 每一種處理器模式自己的物理R14中存放當(dāng)前子程序的返回地址。當(dāng)通過跳轉(zhuǎn)指令調(diào)用子程序時,R14被設(shè)置為該子程序的返回地址;在子程序中,把R14的指賦值到程序計數(shù)器PC中時,子程序返回。★ 當(dāng)異常中斷發(fā)生時,該異常模式特定的物理R14被設(shè)置成該異常模式將要返回的地址,對于有些異常模式,R14的值可能與將返回的地址有個常數(shù)的偏移量。 程序計數(shù)器R15又被記作PC。由于ARM采用了流水線機制,當(dāng)正確讀取了PC的值時,該值為當(dāng)前指令地址加8個字節(jié)。也就是說,對于ARM指令集來說,PC指向當(dāng)前指令的下兩條指令的地址。由于ARM指令是字對齊的,PC值的第0位和第1位總為0。CPSR(當(dāng)前程序狀態(tài)寄存器)可以在任何處理器模式下被訪問。它包含了標志位、中斷禁止位、當(dāng)前處理器模式標志以及其它的一些控制和狀態(tài)位。每一種處理器異常模式下都有一個專用的物理狀態(tài)寄存器,稱為SPSR(備份程序狀態(tài)寄存器)。當(dāng)特定的異常中斷發(fā)生時,這個寄存器用于存放當(dāng)前程序狀態(tài)寄存器的內(nèi)容。在異常中斷返回退出時,可以用SPSR種保存的值來恢復(fù)CPSR。由于用戶模式和系統(tǒng)模式不是異常中斷模式,所以它們沒有SPSR。當(dāng)用戶模式或者系統(tǒng)模式中訪問SPSR,將會產(chǎn)生不可預(yù)知的結(jié)果。SPSR與CPSR的格式相同,:N(Negative)、Z(Zero)、C(Carry)、V(Overflow)統(tǒng)稱為標志位。大部分的ARM指令可以根據(jù)CPSR中的這些條件標志位來選擇性地執(zhí)行。各條件標志位的具體含義如下:N:當(dāng)兩個補碼表示的有符號整數(shù)運算時,N=1表示運算的結(jié)果為負數(shù);N=0表示運算結(jié)果為正數(shù)或零;Z:Z=1表示運算結(jié)果為零;Z=0表示運算的結(jié)果不為零;C:在加法指令中,當(dāng)結(jié)果產(chǎn)生了進位,則C=1;其他情況下C=0; 在減法指令中,當(dāng)運算中發(fā)生借位,則C=0;其他情況下C=0;V:對于加/減法運算指令,當(dāng)操作數(shù)和運算結(jié)果為二進制的補碼表示的帶符號數(shù)時,V=1表示符號位溢出。 CPSR的低8位稱為控制位,當(dāng)異常中斷發(fā)生時這些位發(fā)生改變。在特權(quán)模式下,軟件可以修改這些控制位: I:普通中斷禁止位;I=1時禁止IRQ中斷。 F:快速中斷禁止位;F=1時禁止FIQ中斷。T:對于ARMv4以及更高的版本的T系列的ARM處理器 T=0表示執(zhí)行ARM指令T=1表示執(zhí)行Thumb指令 對于ARMv5以及更高版本的非T系列的ARM處理器★ T=0表示執(zhí)行ARM指令★ T=1表示強制下一條執(zhí)行的指令產(chǎn)生為定義指令中斷 Modes位控制處理器模式,在這不再贅述。 ARM存儲系統(tǒng)這里僅僅介紹ARM編程模型中與存儲系統(tǒng)相關(guān)的一些概念。(1)ARM體系中的存儲空間ARM體系中使用單一的平板地址空間。該地址空間的大小232個8位字節(jié)。這些字節(jié)單元的地址是一個無符號的32位數(shù)值,其取值范圍為0到232-1。ARM的地址空間也可以看作是230個32位的字單元。這些字單元的地址可以被4整除,也就是說該地址的低兩位為0b00。地址為A的字數(shù)包括地址A、A+A+A+3這4個字節(jié)單元的內(nèi)容。(2)ARM的存儲器格式在ARM體系中,每個字單元中包含4個字節(jié)單元或者兩個半字單元,其中1個半字單元中包含兩個字節(jié)單元。但是在字單元中,4個字節(jié)哪一個是高位字節(jié),哪一個是低位字節(jié),則有兩種不同的格式:bigendian格式和littleendian格式。在bigendian格式中,對于地址為A的字單元包括字節(jié)單元A、A+A+A+3,其中字節(jié)單元由高位到低位字節(jié)順序為A、A+A+A+3;地址為A的字單元包括半字單元A、A+2,其中半字單元由高位到低位字節(jié)順序為A、A+2;地址為A的半字單元包括字節(jié)單元A、A+1,其中字節(jié)單元由高位到低位字節(jié)順序為A、A+1。這種存儲器格式如下圖所示: bigendian格式的存儲系統(tǒng)在littleendian格式中,地址為A的字單元包括字節(jié)單元A、A+A+A+3,其中字節(jié)單元由高位到低位字節(jié)順序為A+A+A+A;地址為A的字單元包括半字單元A、A+2,其中半字單元由高位到低位字節(jié)順序為A+A;地址為A的半字單元包括字節(jié)單元A、A+1,其中字節(jié)單元由高位到低位字節(jié)順序為A+A。這種存儲器格式如下圖所示: littleendian格式的存儲系統(tǒng) ARM指令集介紹ARM指令系統(tǒng)屬于RISC指令系統(tǒng)。標準的ARM指令每條都是32位,有些ARM核還可以執(zhí)行16位的Thumb指令集。一般地,ARM指令具有以下特點:★ 指令的條件執(zhí)行 ARM指令都是條件執(zhí)行,條件標志位位于程序代碼字節(jié)的cond位(位28 - 31,下文會介紹)。根據(jù)cond的不同編碼,可以選擇根據(jù)條件碼標志決定指令的執(zhí)行?!? 靈活的第二操作數(shù) ARM指令的另一個重要的特點是數(shù)據(jù)處理類指令有靈活的第二操作數(shù)operand2(位與程序代碼的位0-11)。它既可以是立即數(shù),也可以是邏輯運算數(shù),使得ARM指令可以在讀取數(shù)值的同時進行算術(shù)和移位操作?!? 協(xié)處理器的作用 ARM內(nèi)核可提供協(xié)處理接口,通過擴展協(xié)處理器完成更加復(fù)雜的功能。因此ARM指令中還包括了多條協(xié)處理器指令,使用多達16個協(xié)處理器,允許將其他處理器通過協(xié)處理器接口進行緊耦合;ARM還包括幾種內(nèi)存管理單元的變種,包括簡單的內(nèi)存保護到復(fù)雜的頁面層次?!? Thumb指令 ARM在有的版本支持16位Thumb指令。Thumb指令集的整體執(zhí)行速度比ARM32位指令集快,而且提高了代碼密度。★ 具有RISC指令的特點 由于ARM指令屬于RISC指令,所以多具有RISC指令的特點,指令少,且等長,便于充分利用流水線技術(shù),使用多寄存器,且為簡單的Load和Store指令。ARM指令按功能大致可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、乘法類指令、數(shù)據(jù)傳送指令、協(xié)處理器類指令以及雜項指令(包括狀態(tài)寄存器傳送指令、乘法類指令、軟件中斷指令和斷點指令)。ARM指令字長為固定的32位,一條典型的ARM指令編碼格式如下: 數(shù)據(jù)處理指令編碼其中:★ Cond 位28-31,執(zhí)行指令的條件編碼。★ I 位25,決定operand2的格式。★ opcode 位21-24,操作碼?!? S 位20,表示結(jié)果是否影響狀態(tài)寄存器標志位:1影響,0不影響?!? Rn 位16-19,第一操作數(shù)的寄存器編碼?!? Rd 位12-15,目標寄存器編碼?!? operand2 位0-11,表示第二操作數(shù)編碼。ARM指令包括60多個指令,并且支持多種尋址方式:寄存器尋址、立即數(shù)尋址、寄存器間接尋址、寄存器變址尋址、多寄存器尋址、堆棧尋址、塊拷貝尋址以及相對尋址等。對于具體的指令集,可以參考相關(guān)文檔。 ARM體系的異常中斷 在ARM體系中通常有以下3種方式控制程序的執(zhí)行流程:★ 在程序正常執(zhí)行過程種,每執(zhí)行一條ARM指令,程序計數(shù)器寄存器(PC)的值加4個字節(jié);每執(zhí)行一條Thumb指令,程序計數(shù)器寄存器的值加2個字節(jié)。整個過程是按順序執(zhí)行?!? 通過跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到特定的地址標號處執(zhí)行,或者跳轉(zhuǎn)到特定的子程序處執(zhí)行?!? 當(dāng)異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。在異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行。ARM體系中中斷向量表中指定了各異常中斷及處理程序的對應(yīng)關(guān)系。它可以放在存儲地址的低端,也可以放在存儲地址的高端。異常中斷向量表的大小位32字節(jié),其中每個異常中斷占據(jù)4個字節(jié)大小,保留了4個字節(jié)空間。每個異常中斷對應(yīng)的中斷向量表中的4個字節(jié)的空間中放了一個跳轉(zhuǎn)指令或者一個向PC寄存器中賦值的數(shù)據(jù)訪問指令。通過這兩種指令,程序?qū)⑻D(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。下面是ARM體系中各異常中斷向量的描述表: 異常中斷向量表 ARM處理器對異常中斷的響應(yīng)過程如下: ★ 保存處理器當(dāng)前狀態(tài)、中斷屏蔽位以及各條件標志位。這是通過將當(dāng)前程序狀態(tài)寄存器CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對應(yīng)的SPSR寄存器中實現(xiàn)的。★ 設(shè)置當(dāng)前的程序狀態(tài)寄存器CPSR中相應(yīng)的位,包括設(shè)置CPSR中的位,使處理器進入相應(yīng)的執(zhí)行模式;設(shè)置CPSR中的位,禁止IRQ中斷,當(dāng)進入FIQ模式時,禁止FIQ模式?!? 將寄存器lr_mode設(shè)置成返回地址。★ 將程序計數(shù)器值PC設(shè)置成該異常中斷的中斷向量地址,從而跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。 ARM最小系統(tǒng)描述對于任何一個系統(tǒng),都希望不是一個虛擬系統(tǒng),也就是說系統(tǒng)都希望是特定系統(tǒng),即有具體的CPU,有具體的存儲芯片以及有各種具體的外圍控制模塊。對于本課題來說,最終的bootloader也必須在具體的系統(tǒng)上運行起來。但是,任何一個ARM系統(tǒng),在沒有特定指定的條件下,仍然可以將通用特性(一些通用基本控制模塊)描述出來,在此稱之為ARM最小系統(tǒng),見下圖: ARM最小系統(tǒng) 從上圖中,可以了解一個基本的ARM最小系統(tǒng)通常包括以下幾個部分:★ ARM core★ 存儲控制器:通過它系統(tǒng)可以接入各種DRAM以及ROM★ 總線橋接:系統(tǒng)總線與外圍總線的連接器★ 中斷控制器:供各種設(shè)備提供中斷服務(wù)★ 串口★ GPIO控制模塊:供各種外設(shè)以及系統(tǒng)擴充使用對于一些復(fù)雜系統(tǒng),還可以有更多的功能性模塊,特別是隨著網(wǎng)絡(luò)通信的發(fā)展,ARM系統(tǒng)中包括了更多的通訊控制模塊。 4 Bootloader的概念本文在實現(xiàn)以及驗證上都以開放源代碼的linux為操作系統(tǒng),因此,在眾多舉例以及圖表描述中,多以linux系統(tǒng)為例子。但是,這并不防礙對許多概念的解釋,其本質(zhì)在任何操作系統(tǒng)中都是一致的,所不同的僅僅是實現(xiàn)形式。 Bootloader的基本概念一個嵌入式Linux系統(tǒng)從軟件的角度看通常可以分為四個層次:引導(dǎo)加載序、Linux內(nèi)核、文件系統(tǒng)、用戶應(yīng)用程序。圖 嵌入式Linux系統(tǒng)組成 引導(dǎo)加載程序是系統(tǒng)加電后運行的第一段代碼。我們熟悉的PC中的引導(dǎo)程序一般由BIOS和位于MBR的OS bootloader(例如LILO或者GRUB)一起組成。然而在嵌入式系統(tǒng)中通常沒有像BIOS那樣的固件程序(有的嵌入式CPU有),因此整個系統(tǒng)的加載啟動任務(wù)就完全由bootloader來完成。在嵌入式Linux中, 。簡單地說,bootloader就是在操作系統(tǒng)內(nèi)核運行前運行地一段小程序。通過這段小程序,我們可以初始化必要的硬件設(shè)備,創(chuàng)建內(nèi)核需要的一些信息并將這些信息通過相關(guān)機制傳遞給內(nèi)核,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),最終調(diào)用操作系統(tǒng)內(nèi)核,真正起到引導(dǎo)和加載內(nèi)核的作用。bootloader是依賴于硬件而實現(xiàn)的,特別是在嵌入式系統(tǒng)中。不同的體系結(jié)構(gòu)需求的bootloader是不同的;除了體系結(jié)構(gòu),bootloader還依賴于具體的嵌入式板級設(shè)備的配置。也就是說,對于兩塊不同的嵌入式板而言,即使它們基于相同的CPU構(gòu)建,運行在其中一塊電路板上的bootloader,未必能夠運行在另一塊電路開發(fā)板上。Bootloader的啟動過程可以是單階段的,也可以是多階段的。通常多階段的bootloader能提供更為復(fù)雜的功能,以及更好的可移植性。從固態(tài)存儲設(shè)備上啟動的bootloader大多數(shù)是二階段的啟動過程,也即啟動過程可以分為stage 1和stage 2兩部分。 Bootloader的操作模式 大多數(shù)bootloader都包含兩種不同的操作模式:“啟動加載”模式和“下載”模式,這種區(qū)別對于開發(fā)人員才有意義。但從最終用戶的角度看,bootloader的作用永遠就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載模式與下載工作模式的區(qū)別。啟動加載模式:這種模式也稱為“自主”模式,即bootloader從目標機上的某個固體存儲設(shè)備上將操作
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1