學習筆記-uboot的文件及目錄


 

1、編譯之前工作

(1)檢查當前編譯環境中有沒有安裝合適的arm-linux-gcc。

 

(2)檢查uboot根目錄的Makefile中編譯器的設置是否正確。

 

2、一些文件

(1)arm_config.mk。后綴是.mk,是一個Makefile文件,將來在某個Makefile中會去調用它。

(2)三個Changelog文件,修改記錄文件,該文件記錄了這個uboot項目的版本變遷以及每個版本較上個版本修改的記錄。

(3)image_split。一個腳本,看說明是用來分割uboot.bin到BL1的

(4)MAKEALL,一個腳本,應該是幫助編譯uboot的。

(5)Makefile。這個很重要,是uboot源代碼的主Makefile,將來整個uboot被編譯時就是用這個Makefile管理編譯的,

(6)mk。快速編譯的腳本,其實就是先清理然后配置然后編譯而已。

(7)mkconfig。這個很重要,是uboot配置階段的主要配置腳本。uboot的可移植性很大程度就是靠這個配置腳本在維護的。

(8)rules.mk。這個文件是我們uboot的Makefile使用的規則,本身非常重要,但是我們不去分析他,不去看他。

總結:以上這些文件中,對我們比較重要,需要認真看的有2個:mkconfig和Makefile。一個負責uboot的配置,一個負責編譯。

 

3、目錄

(1)api

  硬件無關的功能函數的API。uboot移植時基本不用管,這些函數是uboot本身使用的。

(2)api_examples.

  API相關的測試事例代碼。

(3)board

  board文件夾下每一個文件都代表一個開發板,這個文件夾下面放的文件就是用來描述這一個開發板的信息的。

  board目錄下有多少個文件夾,就表示當前這個uboot已經被移植到多少個開發板上了(當前的uboot支持多少個開發板)。

  后來發展,uboot放廠家目錄,(Vendor目錄)

(4)common

  common是普遍的普通的,這個文件夾下放的是一些與具體硬件無關的普遍適用的一些代碼。譬如控制台實現、crc校驗的。

  但是更多的主要是兩類:一類是cmd開頭的,是用來實現uboot的命令系統的;另一類是env開頭的,是用來實現環境變量的。

(5)cpu

  這個目錄是SoC相關的,里面存放的代碼都是SoC相關初始化和控制代碼(譬如CPU的、中斷的、串口等SoC內部外設的,包括起始代碼start.S也在這里)。

(6)doc。

  文檔目錄,里面存放了很多uboot相關文檔,這些文檔可以幫助我們理解uboot代碼。

(7)drivers

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

(8)examples。示例代碼,

(9)fs。filesystem,文件系統。這個也是從linux源代碼中移植過來的,用來管理Flash等資源。

(10)include

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

(11)lib_開頭的一坨。

  (典型的lib_armlib_generic)架構相關的庫文件。譬如lib_arm里面就是arm架構使用的一些庫文件。lib_generic里是所有架構通用的庫文件。這類文件夾中的內容移植時基本不用管。

(12)ibfdt。

  設備樹有關的。linux內核在3.4左右的版本的時候更改了啟動傳參的機制,改用設備樹來進行啟動傳參,進行硬件信息的描述了。

(13)nand_spl。nand相關的

(14)net。網絡相關的代碼,譬如uboot中的tftp nfs ping命令 都是在這里實現的。

(15)sd_fusing。這里面代碼實現了燒錄uboot鏡像到SD卡的代碼。

(16)tools。里面是一些工具類的代碼。譬如mkimage。

總結:文件夾里面比較重要的有:board、common、cpu、drivers、include、lib_arm、lib_generic、sd_fusing

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM