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

正文內(nèi)容

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

2024-08-26 04:08 本頁面
 

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