- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
BootLoader的啟動過程是單階段(SingleStage)還是多階段(Multi-Stage)多階段的BootLoader提供更為複雜的功能,以及更好的可移植性從固態存儲設備上啟動的BootLoader大多都是2階段的啟動過程啟動過程可以分為stage1和stage2兩部分BOOTLOADER一般分為2部分彙編部分執行簡單的硬體初始化C語言部分負責複製數據,設置啟動參數,串口通信等功能BOOTLOADER的生命週期1.初始化硬體,如設置UART(至少設置一個),檢測記憶體等2.設置啟動參數,告訴內核硬體的資訊,如用哪個啟動介面,串列傳輸速率.3.跳轉到操作系統的首地址.4.消亡BootLoader的操作模式(OperationMode)兩種不同的操作模式啟動加載模式自主(Autonomous)模式從目標機上的某個固態存儲設備上將操作系統加載到RAM中運行BootLoader的正常工作模式下載模式通過串口連接或網路連接等通信手段從主機(Host)下載檔如:下載內核映像和根檔系統映像等。從主機下載的檔通常首先被BootLoader保存到目標機的RAM中,然後再被BootLoader寫到目標機上的FLASH類固態存儲設備中。通常在第一次安裝內核與根檔系統時被使用系統更新也會使用BootLoader的這種工作模式通常都會向它的終端用戶提供一個簡單的命令行介面Blob或U-Boot等功能強大的BootLoader通常同時支持這兩種工作模式允許用戶在這兩種工作模式之間進行切換如Blob在啟動時處於正常的啟動加載模式,但是它會延時10秒等待終端用戶按下任意鍵而將blob切換到下載模式。如10秒內沒有用戶按鍵,則blob繼續啟動Linux內核Boot?Loader?的主要任務stage1?通常包括以下步驟硬體設備初始化為加載?Boot?Loader?的?stage2?準備?RAM?空間拷貝?Boot?Loader?的?stage2?到?RAM?空間中設置好堆疊跳轉到?stage2?的?C?入口點Boot?Loader?的?stage2?通常包括以下步驟初始化本階段要使用到的硬體設備檢測系統記憶體映射(memory?map)將?kernel?映像和根檔系統映像從?flash?上讀到?RAM?空間中為內核設置啟動參數調用內核
stage1:基本的硬體初始化目的為?stage2?的執行以及隨後的?kernel?的執行準備好一些基本的硬體環境1.?遮罩所有的中斷為中斷提供服務通常是?OS?設備驅動程式的責任,Boot?Loader?的執行全過程中可以不必回應任何中斷中斷遮罩可以通過寫?CPU?的中斷遮罩寄存器或狀態寄存器(如?ARM?的?CPSR?寄存器)來完成2.?設置?CPU?的速度和時鐘頻率。3.?RAM?初始化包括正確地設置系統的記憶體控制器的功能寄存器以及各記憶體庫控制寄存器等。4.?初始化?LED通過?GPIO?來驅動?LED,其目的是表明系統的狀態是?OK?還是?Error如板子上沒有LED,那麼也可以通過初始化?UART?向串口列印?Boot?Loader?的?Logo?字元資訊5.?關閉?CPU?內部指令/數據?cachestage1:為加載stage2準備RAM空間通常把stage2加載到RAM空間中來執行stage2通常是C語言執行代碼一般1MRAM空間已經足夠,地址範圍可以任意安排如blob就將stage2可執行映像從系統RAM起始地址0xc0200000開始的1M空間內執行將stage2安排到RAM空間的最頂1MB也是一種值得推薦的方法。stage2_end=stage2_start+stage2_size對所安排的地址範圍進行測試必須確保所安排的地址範圍可讀寫的RAM空間測試方法可以採用類似於blob的方法以memorypage為被測試單位,測試每個page開始的兩個字是否是可讀寫的stage1:拷貝stage2到RAM中拷貝時要確定兩點(1)stage2的可執行映象在固態存儲設備的存放起始地址和終止地址(2)RAM空間的起始地址。stage1:設置堆疊指針sp通常把sp的值設置為(stage2_end-4)1MB的RAM空間的最頂端在設置堆疊指針sp之前,也可以關閉led燈,以提示用戶我們準備跳轉到stage2stage1:跳轉到
文档评论(0)