U-boot目錄結構學習筆記
阿新 • • 發佈:2019-01-28
這裡我看的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序列號和釋出時間的快照。 |