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

正文內(nèi)容

系統(tǒng)引導(dǎo)程序40boot-loader41的設(shè)計與實現(xiàn)畢業(yè)設(shè)計說明書(完整版)

2025-01-20 17:24上一頁面

下一頁面
  

【正文】 圖 littleendian 格式 地 存儲系統(tǒng) ARM 指令集介紹 ARM 指令系統(tǒng)屬于 RISC 指令系統(tǒng)標(biāo)準(zhǔn) 地 ARM 指令每條都是 32 位 ,有些 ARM核還可以執(zhí)行 16位 地 Thumb 指令集一般地 ,ARM 指令具有以下特點: ★ 指令 地 條件執(zhí)行 ARM 指令都是條件執(zhí)行 ,條件標(biāo)志位位于程序代碼字節(jié) 地 cond 位(位 28 - 31,下文會介紹)根據(jù) cond 地 不同編碼 ,可以選擇根據(jù)條件碼標(biāo)志決定指令 地 執(zhí)行 ★ 靈活 地 第二操作數(shù) ARM 指令 地 另一個重要 地 特點是數(shù)據(jù)處理類指令有靈活 地 第二操作數(shù)operand2(位與程序代碼 地 位 0- 11)它既可以是立即數(shù) ,也可以是邏輯運算數(shù) ,使得 ARM 指令可以在讀取數(shù)值 地 同時進(jìn)行算術(shù)和移位操作 ★ 協(xié)處理器 地 作用 ARM 內(nèi)核可提供協(xié)處理接口 ,通過擴(kuò)展協(xié)處理器完成更加復(fù)雜 地 功能因 此ARM 指令中還包括 l多條協(xié)處理器指令 ,使用多達(dá) 16 個協(xié)處理器 ,允許將其他處理器通過協(xié)處理器接口進(jìn)行緊耦合; ARM 還包括幾種內(nèi)存管理單元 地 變種 ,包括 17 簡單 地 內(nèi)存保護(hù)到復(fù)雜 地 頁面層次 ★ Thumb 指令 ARM在有 地 版本支持 16位 Thumb指令 Thumb指令集 地 整體執(zhí)行速度比 ARM32位指令集快 ,而且提高 l代碼密度 ★ 具有 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)寄存器標(biāo)志位: 1影響 ,0不影響 ★ Rn 位 16- 19,第一操作數(shù) 地 寄存器編碼 ★ Rd 位 12- 15,目標(biāo)寄存器編碼 ★ 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)到特定 地 地址標(biāo)號處執(zhí)行 ,或者跳轉(zhuǎn)到特定 地子程序處執(zhí)行 18 ★ 當(dāng)異常中斷發(fā)生時 ,系統(tǒng)執(zhí)行完當(dāng)前指令后 ,將跳轉(zhuǎn)到相應(yīng) 地 異常中斷處理程序處執(zhí)行在異常中斷處理程序執(zhí)行完成后 ,程序返回到發(fā)生中斷 地 指令 地 下一條指令處執(zhí)行 ARM 體系中中斷向量表中指定 l各異常中斷及處理程序 地 對應(yīng)關(guān)系它可以放在存儲地址 地 低端 ,也可以放在存儲地址 地 高端異常中斷向量表 地 大小位 32 字節(jié) ,其中每個異常中斷占據(jù) 4個字節(jié)大 小 ,保留 l4個字節(jié)空間 每個異常中斷對應(yīng) 地 中斷向量表中 地 4個字節(jié) 地 空間中放 l一個跳轉(zhuǎn)指令或者一個向 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寄存器中實現(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 模式時 ,禁止 FIQ 模式 ★ 將寄存器 lr_mode 設(shè)置成返回地址 ★ 將程序計數(shù)器值 PC 設(shè)置成該異常中斷 地 中斷向量地址 ,從而跳轉(zhuǎn)到相應(yīng) 地異常中斷處理程序處執(zhí)行 ARM 最小系統(tǒng)描述 對于任何一個系統(tǒng) ,都希望不是一個虛擬系統(tǒng) ,也就是說系統(tǒng)都希望是特定 19 系統(tǒng) ,即有具體 地 CPU,有具體 地 存儲芯片以及有各種具體 地 外圍控制模塊對于本課題來說 ,最終 地 bootloader 也必須在具體 地 系統(tǒng)上運行起來但是 ,任何一個ARM 系統(tǒng) ,在沒有特定指定 地 條件下 ,仍然可以將通用特性(一些通用基本控制模塊)描述出來 ,在此稱之為 ARM最小系統(tǒng) ,見下圖: 圖 ARM 最小系統(tǒng) 從上圖中 ,可以 l解一個基本 地 ARM最小系統(tǒng)通常包括以下幾個部分 : ★ 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)中包括 l更多 地 通訊控制模塊 20 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 中 , 圖 中 地 引導(dǎo)加載程序即等效為 bootloader 簡單地說 ,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 是不同 地 ;除 l體系結(jié)構(gòu) ,bootloader 還依賴于具體 地 嵌入 21 式板級設(shè)備 地 配置也就是說 ,對于兩塊不同 地 嵌入式板而言 ,即使它們基于相同地 CPU 構(gòu)建 ,運行在其中一塊電路板上 地 bootloader,未必能夠運行在另一塊電路開發(fā)板上 Bootloader 地 啟動過程可以是單階段 地 ,也可以是多階段 地 通常多階段 地bootloader能提供更為復(fù)雜 地 功能 ,以及更好 地 可移植性從固態(tài)存儲設(shè)備上啟動地 bootloader 大多數(shù)是二階段 地 啟動過程 ,也即啟動過程可以分為 stage 1 和stage 2 兩部分 Bootloader 地 操作模式 大多數(shù) bootloader 都包含兩種不同 地 操作模式: “ 啟動加載 ” 模式和 “ 下載 ” 模式 ,這種區(qū)別對于開發(fā)人員才有意義但從最終用戶 地 角度看 ,bootloader地 作用永遠(yuǎn)就是用來加載操作系統(tǒng) ,而并不存在所謂 地 啟動加載模式與下載工作模式 地 區(qū)別 啟動加載模式:這種模式也稱為 “ 自主 ” 模式 ,即 bootloader 從目標(biāo)機上地 某個固體存儲設(shè)備上將操作系統(tǒng)加載到 RAM 中運行 ,整個過程沒有用戶 地 介入這種模式是 bootloader 地 正常工作模式 ,因此當(dāng)以嵌入式產(chǎn)品發(fā)布 地 時候 ,bootloader 必須工作在這種模 式下 下載模式:在這種模式下 ,目標(biāo)機上 地 bootloader 將通過串口或者網(wǎng)絡(luò)連接或者其它通信手段從主機下載文件 ,比如:下載內(nèi)核鏡像和根文件系統(tǒng)鏡像等從主機下載 地 文件通常首先被 bootloader 保存到目標(biāo)機 地 RAM 中 ,然后被bootloader 寫到目標(biāo)機上 地 FLASH 類固態(tài)存儲設(shè)備中 Bootloader 地 這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時使用;此外 ,以后 地 系統(tǒng)更新也會使用bootloader地 這種工作模式工作于這種模式下 地 bootloader通常都會向它 地 中斷用戶提供一個簡單 地 命令行接口 Bootloader 地 概念擴(kuò)展 Bootloader 最主要 地 功能是引導(dǎo)加載內(nèi)核鏡像但是隨著嵌入式系統(tǒng) 地 發(fā)展 ,bootloader已經(jīng)逐漸在基本功能 地 基礎(chǔ)上 ,進(jìn)行 l擴(kuò)展 ,bootloader可以更多地增加對具體系統(tǒng) 地 板級支持 ,即增加一些硬件模塊功能上 地 使用支持 ,以方便開發(fā)人員進(jìn)行開發(fā)和調(diào)試從這個層面上看 ,功能擴(kuò)展后 地 bootloader 可以虛擬地看成是一個微小 地 系統(tǒng)級 地 代碼包 22 ARM Bootloader 地 共性 從上面 bootloader 地 基本概念可以看出 ,bootloader 地 設(shè) 計與實現(xiàn)是與具體 地 CPU 以及具體 地 硬件系統(tǒng)緊密相關(guān) 地 ,從上一章 地 實現(xiàn)就可以看出 ,要實現(xiàn)一個通用 地 ARM bootloader,即要適合所有 地 ARM處理器以及硬件系統(tǒng) ,是不太可能 地 事情另外 ,不同 地 操作系統(tǒng) ,可能對具體 地 bootloader 還會有另外額外 地要求但是 ,我們還是可以根據(jù) ARM 地 體系結(jié)構(gòu) ,從理論上總結(jié)出一些 ARM 系統(tǒng)bootloader 實現(xiàn) 地 共性 ,而這僅僅局限于理論上至于涉及到具體 地 設(shè)計與實現(xiàn) ,可以參看第 5 章 地 具體內(nèi)容 ,并根據(jù)自己 地 硬件系統(tǒng)進(jìn)行移植 ,也不是一件困難地 事情 對于 ARM bootloader 地 一些共同特性 ,理論上只局限于 bootloader 地 基本功能 ,因為擴(kuò)展功能眾多 ,可以有串口、 USB、以太網(wǎng)接口、 IDE、 CF 等 ,無法進(jìn)行歸納與總結(jié) 對于一個 ARM 系統(tǒng)來說 ,本質(zhì)上 ,bootloader 作為引導(dǎo)與加載內(nèi)核鏡像 地“ 工具 ” ,在實現(xiàn)上 ,必須提供以下幾個功能 ,更確切地說 ,必須做到以下幾點: ( 1) 初始化 RAM(必需): bootloader 必須能夠初始化 RAM,因為將來系統(tǒng)要通過它保存一些 Volatile 數(shù)據(jù) ,但具體地實現(xiàn)要依賴與具體 地 CPU 以及硬件系統(tǒng) ( 2) 初始化串口(可選 ,推薦) : bootloader 應(yīng)該要初始化以及使能至少一個串口 ,通過它與控制臺聯(lián)系進(jìn)行一些 debug 地 工作;甚至與 PC 通信 ( 3) 創(chuàng)建內(nèi)核參數(shù)列表(針對 linux 操作系統(tǒng) ,推薦) ( 4) 啟動內(nèi)核鏡像(必需):根據(jù)內(nèi)核鏡像保存 地 存儲介質(zhì)不同 ,可以有兩種啟動方式: FALSH 啟動以及 RAM 啟動;但是無論是哪種啟動方式 ,下面 地 系統(tǒng)狀態(tài)必須得到滿足: ★ CPU 寄存器
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1