1. 程式人生 > >u-boot原始碼目錄分析(以jz2440 u-boot1.1.6為例)

u-boot原始碼目錄分析(以jz2440 u-boot1.1.6為例)

一、檔案的分析

  1. arm_config.mk。字尾是.mk,是一個Makefile檔案,將來在某個Makefile中會去呼叫它。
  2. Changelog檔案,修改記錄檔案,該檔案記錄了這個uboot專案的版本變遷以及每個版本較上個版本修改的記錄。
  3. config.mk。和arm_config.mk差不多性質。 
  4. COPYING。版權宣告,uboot本身是GPL許可證的。
  5. CREDITS。鳴謝,裡面記錄了對uboot有貢獻的人,感謝目錄。
  6. MAINTAINERS。維護者,就是當前在參與維護uboot原始碼的社群工作者。
  7. Makefile。這個很重要,是uboot原始碼的主Makefile,將來整個uboot被編譯時就是用這個Makefile管理編譯的
  8. mkconfig。這個很重要,是uboot配置階段的主要配置指令碼。uboot的可移植性很大程度就是靠這個配置指令碼在維護的。
  9. README。所有的軟體都有README,一般拿到一個東西要先讀README,這個東西其實就是個簡單的使用說明書。
  10. rules.mk。這個檔案是我們uboot的Makefile使用的規則,本身非常重要,但是我們不去分析他,不去看他。

二、資料夾的分析

(1)board資料夾

board是板的意思,板就是開發板。board資料夾下每一個檔案都代表一個開發板,這個資料夾下面放的檔案就是用來描述這一個開發板的資訊的。board目錄下有多少個資料夾,就表示當前這個uboot已經被移植到多少個開發板上了(當前的uboot支援多少個開發板)。

(2)common資料夾

common是普遍的普通的,這個資料夾下放的是一些與具體硬體無關的普遍適用的一些程式碼。譬如控制檯實現、crc校驗的。但是更多的主要是兩類:一類是cmd開頭的,是用來實現uboot的命令系統的;另一類是env開頭的,是用來實現環境變數的。

(3)cpu資料夾

這個目錄是SoC相關的,裡面存放的程式碼都是SoC相關初始化和控制程式碼(譬如CPU的、中斷的、串列埠等SoC內部外設的,包括起始程式碼start.S也在這裡)。裡面很多子資料夾,每一個子資料夾就是一個SoC系列。

注意:這個問價是嚴格和硬體相關的,因此移植時也是要注意的。但是因為這個資料夾內都是SoC有關的,我們自己的開發板和三星的開發板雖然板子設計不同但是SoC都是同一個,因此實際移植時這個目錄幾乎不用動。

(4)disk資料夾

磁碟介面程式

(5)doc資料夾

文件目錄,裡面存放了很多uboot相關文件,這些文件可以幫助我們理解uboot程式碼。但是因為是純英文的,而且很雜亂,所以幾乎沒用。

(6)drivers資料夾

顧名思義,驅動。這裡面放的就是從linux原始碼中扣出來的原封不動的linux裝置驅動,主要是開發板上必須用到的一些驅動,如網絡卡驅動、Inand/SD卡、NandFlash等的驅動。要知道:uboot中的驅動其實就是linux中的驅動,uboot在一定程度上移植了linux的驅動給自己用。但是linux是作業系統而uboot只是個裸機程式,因此這種移植會有不同,讓我說:uboot中的驅動其實是linux中的驅動的一部分。

(7)dtt

數字溫度感測器的驅動

(8)examples

示例程式碼,沒用過。

(9)fs

filesystem,檔案系統。這個也是從linux原始碼中移植過來的,用來管理Flash等資源。

(10)include

標頭檔案目錄。uboot和linux kernel在管理標頭檔案時都採用了同一個思路,就是把所有的標頭檔案全部集中存放在include目錄下,而不是標頭檔案跟著自己對應的c檔案。所以在uboot中標頭檔案包含時路徑結構要在這裡去找。

(11)lib_開頭的資料夾

(典型的lib_arm和lib_generic)架構相關的庫檔案。譬如lib_arm裡面就是arm架構使用的一些庫檔案。lib_generic裡是所有架構通用的庫檔案。這類資料夾中的內容移植時基本不用管。

(12)nand_spl

nand相關的

(13)net

網路相關的程式碼,譬如uboot中的tftp nfs ping命令 都是在這裡實現的。

(14)post

上電自檢程式

(15)rtc

實時時鐘的驅動

(16)tools

裡面是一些工具類的程式碼。製作S-record/u-boot格式的工具,譬如mkimage。

 

 

REF:

1.朱友鵬老師課件

2.《嵌入式linux應用開發完全手冊》-韋東山