專題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可以參考

http://blog.csdn.net/the_vampire_diary/article/details/13861021

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章