1. 程式人生 > >U-boot目錄結構學習筆記

U-boot目錄結構學習筆記

這裡我看的U-boot版本是2010.6版以後的版本,和之前的版本目錄有些不同。學習過程主要是參考《深入理解BootLoader》這本書和看朱友鵬老師的嵌入式視訊學的。

主目錄 

Uboot 介紹
├── api 存放uboot提供的介面函式
├── arch 和體系結構相關的程式碼
├── board 目標板相關檔案
├── common 通用的程式碼,涵蓋各個方面,已命令列處理為主
├── disk 磁碟分割槽相關程式碼
├── doc 文件,一堆README開頭的檔案
├── drivers 驅動,很豐富,每種型別的裝置驅動佔用一個子目錄
├── examples 示例程式
├── fs 檔案系統,支援嵌入式開發板常見的檔案系統
├── include 標頭檔案,已通用的標頭檔案為主
├── lib 通用庫檔案
├── nand_spl NAND儲存器相關程式碼
├── net 網路相關程式碼,小型的協議棧
├── post 上電自檢程式
└── tools 輔助程式,用於編譯和檢查uboot目標檔案

U-boot的目錄大致分為三大部分

第一部分主要是和處理器體系結構(arch),硬體開發板(board)有關。

ARCH目錄
按照體系結構進行劃分的,對ARM體系的CPU,則分析ARM目錄下的結構。
arch/arm 介紹
├──cpu 根據arm版本號進行劃分,如arm11、armv7等。
├──include 處理器用到的標頭檔案
└──lib 通用的彙編程式碼、C程式碼。包含了舊版的Lib_arm、Lib_ppc、Lib_i386
ps:從u-boot-2010.06版本開始把體系結構相關的內容合併,原先的cpu與lib_arch內容全部納入arch中,並且其中增加inlcude資料夾;分離出通用庫檔案lib。
BOARD目錄
裡面主要放置不同開發板的相關程式碼。
INCLUDE目錄
Uboot標頭檔案等公用標頭檔案,其中configs字目錄下放置了與目標板相關的標頭檔案,標頭檔案裡面包含了一些板級配置相關的巨集定義。

第二部分主要是通用的函式和驅動相關的程式

COMMON目錄
獨立於處理器體系結構的通用程式碼,通常與硬體無關的普通適用程式碼。如:控制檯程式碼(uboot的命令語句cmd)、CRC校驗程式碼等。
DRIVER目錄
通用的裝置驅動,比如各種網絡卡、支援CFI的flash、串列埠和usb匯流排等。
FS目錄
包含系統檔案的程式碼,u-boot現在支援cramfs、fat、fdos、jffs2、yaffs和registerfs等檔案系統。
LIB目錄
通用多功能函式的實現。
NET目錄
與網路相關的檔案目錄,BOOTP協議、TFTP協議、RARP協議和NFS檔案系統的實現。
POST目錄
上電自檢檔案目錄。

第三部分主要是Uboot的應用程式、工具、測試程式或文件。

API目錄
為其他應用程式提供過的硬體無關的功能函式的API。
DOC目錄
開發使用文件。
EXAMPLES目錄
示例程式碼,以helloworld為例,該示例是一個獨立的程式。
tools目錄
裡面是一些工具類的程式碼。建立bin映象檔案等的工具。

各檔案介紹

uboot 介紹
├── boards.cfg 用於目標板配置引數檔案。
├── config.mk 定義交叉編譯器、除錯、優化、預處理、C編譯器、連結選項、指定編譯規則。
├── COPYING 條款宣告。
├── CREDITS 鳴謝,裡面記錄了對uboot有貢獻的人
├── helper.mk 生成U-Boot.list檔案,檔案包含程式編譯物件資訊等。
├── MAINTAINERS 維護者,就是當前在參與維護uboot原始碼的社群工作者。
├── MAKEALL 一個指令碼,應該是幫助編譯uboot的。
├── Makefile U-Boot的makefile,主要用來編譯連結並生成U-Boot映象。
├── mkconfig 建立工程需要的一些軟連結並建立配置檔案config.h。
├── README U-Boot的介紹資訊。
├── rules.mk U-Boot的Makefile使用的規則
└── snapshot.commit U-Boot序列號和釋出時間的快照。