開發環境:
1 .開發板mini2440
2. u-boot-2010.12
參考i資料:https://blog.csdn.net/androidbbc/article/details/50961163
http://www.cnblogs.com/kele-dad/p/8969174.html
一、下載u-boot- 2010.12,並且解壓
二、分析u-boor-2010.12

api: 存放uboot提供的接口函數
config.mk: 根據不同開發板定制的代碼,代碼也不少
drivers: 驅動,很豐富,每種類型的設備驅動占用一個子目錄
MAINTAINERS:
net: 網絡相關代碼,小型的協議棧
snapshot.commit
arch 與體系結構相關的代碼,uboot的重頭戲
COPYING
examples 示例程序
MAKEALL
onenand_ipl
tools 輔助程序,用於編譯和檢查uboot目標文件
board 根據不同開發板定制的代碼,代碼也不少
CREDITS
fs 文件系統,支持嵌入式開發板常見的文件系統
Makefile
post 加電自檢程序
boards.cfg
disk 磁盤分區相關代碼
include 頭文件,已通用的頭文件為主
mkconfig
README
common 通用的代碼,涵蓋各個方面,已命令行處理為主
doc 文檔,一堆README開頭的文件
lib 通用庫文件
nand_spl NAND存儲器相關代碼
rules.mk
> 移植的主要相關的目錄為arch、board目錄
arm目錄

cpu arm920t目錄:

vi u-boot.lds

可以看到第一個執行的程序是start.s
>cd board/samsung/smdk2410/ 進入和單板相關的目錄

lowlevel_init.s :和內存控制初始化相關的函數
smdk2410.c是和單板初始化相關的函數
三、分析u-boot編譯流程
一般我們編譯u-boot的流程為:
1. 配置 make xxx_config
2. 編譯 make
> make xxx_config 分析
當這個命令執行時,它會根據 kconfig 及 xx_defconfig 來生成 .config 文件
- Makefiles 有 5 個部分:
- Makefile:頂層 Makefile,提供針對各種目標的接口,一般和實現無關。當我們要針對某個目標進行分析時,作為起點,總是嘗試在此文件中找到對應的目標定義,然后沿着該定義深入挖掘。
- .config:uboot 配置文件,如果是內核,就是內核的配置文件,在配置 uboot時候生成,所有的 Makefile 文件(包括頂層目錄及各級子目錄)都是根據 .config 來決定使用哪些文件。
- arch/$(ARCH)/Makefile:平台相關 Makefile,提供針對不同架構的目標,變量和規則定義。文件位置比較固定
- scripts/Makefile.*:Makefile 共用的通用規則、腳本等
- kbuild Makefiles:各級子目錄下的 Makefile,相對簡單,被上一層 Makefile 調用來編譯當前目錄下的文件。
頂層 Makefiles 讀取從uboot 配置程序中生成的 .config 文件
