1. 程式人生 > >專題4-我是bootloader設計師-uboot工作流程分析+G-boot構架設計

專題4-我是bootloader設計師-uboot工作流程分析+G-boot構架設計

一、uboot工作流程分析

1、程式的入口

首先在uboot的Makefile中檢視關鍵詞“smdk2440”,在board/samsung(board代表開發板支援)中有個smdk2440的資料夾,裡面有連結器指令碼u-boot.lds,在u-boot.lds中找到程式碼段的第一行cpu/s3c24**/start.o,即start.S(位於cpu/s3c24**)為程式首先執行的檔案,再看一下入口指令ENTRY(_start),即_start為程式的入口。
這裡寫圖片描述

找到程式的入口後,通過分析uboot關注程式去實現了什麼(看註釋),而暫時不關心具體是怎麼實現的。

2、第一階段程式分析(BL1)

(B:相對

跳轉,不會對pc指標產生實質性的影響,只會相對修改。所以要明確連結地址(用反彙編可以檢視連結地址和機器碼)和pc指標值之間的區別)
這裡寫圖片描述

3、第二階段程式分析(BL2)
入口語句:ldr pc,start_armboot(直接修改了pc指標,跳到記憶體中去執行)
(略)

二、bootloader構架設計(G-boot)

第一階段:
這裡寫圖片描述

第二階段:
這裡寫圖片描述
備註:
bootm要做的事情:
1. 讀取頭部,把核心拷貝到合適的地方
2. 把引數給核心準備好,並告訴核心引數的首地址
3. 引導核心
bootm可以參考