uboot的目录分析
以下內容源于朱有鵬嵌入式課程的學習,如有侵權,請告知刪除。
一、文件分析
1、九鼎官方uboot和三星原版uboot對比
- 不同版本的uboot或者同一版本不同人移植的uboot,目錄結構和文件內容都會有所不同,即可以自己根據需要去添加/刪除/更改目錄結構。
- 九鼎在以三星的uboot為原材料進行移植時,刪除了很多不必要的文件夾/文件。
2、各文件介紹
(1).gitignore。git是一個版本管理工具(類似的還有svn),這個文件和git有關,和uboot本身無關的,不用去管。
(2)arm_config.mk。后綴是.mk,是一個Makefile文件,將來在某個Makefile中會去調用它。
(3)三個Changelog文件。修改記錄文件,記錄uboot項目的版本變遷,以及每個版本較上個版本修改的記錄。正式的項目都有這些記錄的。主要是給維護uboot的人用的。
(4)config.mk。和arm_config.mk性質差不多。
(5)COPYING。版權聲明,uboot本身是GPL許可證的。
(6)CREDITS。鳴謝,里面記錄了對uboot有貢獻的人,感謝目錄。
(7)image_split。一個腳本,看說明是用來分割uboot.bin到BL1的,暫時用不到,先不管。
(8)MAINTAINERS。維護者,就是當前在參與維護uboot源碼的社區工作者。
(9)MAKEALL。一個腳本,應該是幫助編譯uboot的。
(10)Makefile:此文件是uboot源代碼的主Makefile,用此文件來管理uboot的編譯。
(11)mk。快速編譯的腳本,其實就是先清理然后配置然后編譯而已。
#!/bin/sh make distclean make x210_sd_config make -j4 (12)mkconfig:此文件是uboot配置階段的主要配置腳本。uboot的可移植性很大程度依靠這個配置腳本。(13)mkmovi。一個腳本,和iNand/SD卡啟動有關。
(14)README。所有的軟件都有README,其實就是個簡單的使用說明書。
(15)rules.mk。這個文件是uboot的Makefile的使用規則。本身非常重要,但是不用分析。
總結:重要文件有mkconfig和Makefile,一個負責uboot的配置,一個負責編譯。
二、目錄分析
(1)api。硬件無關的功能函數的API。uboot移植時基本不用管,這些函數是uboot本身使用的。
(2)api_examples。 API相關的測試事例代碼。
(3)board
- board文件夾下每一個文件都代表一個開發板,這個文件夾下面放的文件就是用來描述這一個開發板的信息的。
- board目錄下有多少個文件夾,就表示當前的uboot支持多少個開發板。
- 這個文件夾存放一些與具體硬件無關的、普遍適用的一些代碼。
- 譬如控制臺實現、crc校驗的。
- 但是更多的主要是兩類:一類是cmd開頭的,是用來實現uboot的命令系統的;另一類是env開頭的,是用來實現環境變量的。
(5)cpu
- 這個目錄是SoC相關的,存放與SoC相關初始化和控制的代碼(譬如CPU的、中斷的、串口等SoC內部外設的,包括起始代碼start.S)。
- 里面很多子文件夾,每一個子文件夾就是一個SoC系列。
- 這個文件和硬件嚴格相關,移植時也是要注意的。
(6)disk。與磁盤有關。
(7)doc。文檔目錄,里面存放了很多uboot相關文檔,這些文檔可以幫助理解uboot代碼。
(8)drivers
- 存放的是從linux源代碼中拷貝過來的linux設備驅動,主要是開發板上必須用到的一些驅動,如網卡驅動、Inand/SD卡、NandFlash等的驅動。
- uboot中的驅動其實就是linux中的驅動,uboot在一定程度上移植了linux的驅動。
(9)examples。示例代碼。
(10)fs
- filesystem,文件系統。
- 也是從linux源代碼中移植過來的,用來管理Flash等資源。
(11)include,頭文件目錄
- uboot和linux kernel在管理頭文件時都采用了同一個思路,即把所有的頭文件全部集中存放在include目錄下,而不是頭文件跟著自己對應的c文件。
- 因此在uboot中頭文件包含時路徑結構要在這里去找。
(12)lib_開頭的目錄,典型的如lib_arm和lib_generic
- 這是架構相關的庫文件。
- 譬如lib_arm里面就是arm架構使用的一些庫文件。lib_generic里是所有架構通用的庫文件。
- 這類文件夾中的內容移植時基本不用管。
(13)libfdt
- 與設備樹有關。linux內核在3.4左右的版本的時候更改了啟動傳參的機制,改用設備樹來進行啟動傳參,進行硬件信息的描述。
(14)nand_spl。nand相關的。
(15)net。
- 網絡相關的代碼,譬如uboot中的tftp nfs ping都是在這里實現的。
(16)onenand開頭的,是onenand相關的代碼,是三星加的,標準uboot中應該是沒有的。
(17)post。
(18)sd_fusing
- 燒錄uboot鏡像到SD卡的代碼。
(19)tools。里面是一些工具類的代碼。譬如mkimage。
總結:重要的目錄有board、common、cpu、drivers、include、lib_arm、lib_generic、sd_fusing等文件夾。
總結
以上是生活随笔為你收集整理的uboot的目录分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网晚报 | 1月21日 星期五 |
- 下一篇: 制作根文件系统时的错误解决