一、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