本來是開始分析uboot代碼的,但是無論是教材還是網上資料都對於我最新下的 uboot原碼結構不同,對於還是小白的我不容易找到相應的文件,下麵是uboot版本中文件組織結構的改變,,,,, u-boot版本情況 網站:http://ftp.denx.de/pub/u-boot/ 1、版本號變化: 2 ...
本來是開始分析uboot代碼的,但是無論是教材還是網上資料都對於我最新下的 uboot原碼結構不同,對於還是小白的我不容易找到相應的文件,下麵是uboot版本中文件組織結構的改變,,,,,
u-boot版本情況
網站:http://ftp.denx.de/pub/u-boot/
1、版本號變化:
2008年8月及以前
按版本號命名:u-boot-1.3.4.tar.bz2(2008年8月更新)
2008年8月以後均按日期命名。
目前最新版本:u-boot-2011.06.tar.bz2(2011年6月更新)
2、目錄結構變化:
u-boot目錄結構主要經歷過2次變化,u-boot版本第一次從u-boot-1.3.2開始發生變化,主要增加了api的內容;變化最大的是第二次,從2010.6版本開始。
u-boot-2010.03及以前版本
├── api 存放uboot提供的介面函數
├── board 根據不同開發板定製的代碼,代碼也不少
├── common 通用的代碼,涵蓋各個方面,已命令行處理為主
├── cpu 與體繫結構相關的代碼,uboot的重頭戲
├── disk 磁碟分區相關代碼
├── doc 文檔,一堆README開頭的文件
├── drivers 驅動,很豐富,每種類型的設備驅動占用一個子目錄
├── examples 示常式序
├── fs 文件系統,支持嵌入式開發板常見的文件系統
├── include 頭文件,已通用的頭文件為主
├── lib_【arch】 與體繫結構相關的通用庫文件
├── nand_spl NAND存儲器相關代碼
├── net 網路相關代碼,小型的協議棧
├── onenand_ipl
├── post 加電自檢程式
└── tools 輔助程式,用於編譯和檢查uboot目標文件
從u-boot-2010.06版本開始把體繫結構相關的內容合併,原先的cpu與lib_arch內容全部納入arch中,並且其中增加inlcude文件夾;分離出通用庫文件lib。
u-boot-2010.06及以後版本
├── api 存放uboot提供的介面函數
├── arch 與體繫結構相關的代碼,uboot的重頭戲
├── board 根據不同開發板定製的代碼,代碼也不少
├── common 通用的代碼,涵蓋各個方面,已命令行處理為主
├── disk 磁碟分區相關代碼
├── doc 文檔,一堆README開頭的文件
├── drivers 驅動,很豐富,每種類型的設備驅動占用一個子目錄
├── examples 示常式序
├── fs 文件系統,支持嵌入式開發板常見的文件系統
├── include 頭文件,已通用的頭文件為主
├── lib 通用庫文件
├── nand_spl NAND存儲器相關代碼
├── net 網路相關代碼,小型的協議棧
├── onenand_ipl
├── post 加電自檢程式
└── tools 輔助程式,用於編譯和檢查uboot目標文件
3、移植工作涉及的目錄情況
從uboot代碼根目錄,可以看出其已經非常龐大,功能也很豐富。
移植工作最主要的是看對應的處理器和開發板代碼,2010.06版本以後處理器相關的代碼集中在arch、board目錄。(以前版本主要在cpu和board目錄)
先看一下arch目錄:
arch
├── arm
├── avr32
├── blackfin
├── i386
├── m68k
├── microblaze
├── mips
├── nios2
├── powerpc
├── sh
└── sparc
arch目錄內容比以前的版本乾凈,每個子目錄代表一個處理器類型,子目錄名稱就是處理器的類型名稱。
我們移植的是arm的處理器,所以參考一下arch/arm目錄:
arch/arm
├── cpu
├── include
└── lib
arch/arm目錄下有三個目錄,其他的處理器目錄下也是這個結構:
cpu子目錄對應一種處理器的不同產品型號或者系列;
include子目錄是處理器用到的頭文件;
lib目錄對應用到處理器公用的代碼;
下麵看看cpu下的內容,arch/arm/cpu目錄下的內容:
arch/arm/cpu
├── arm720t
├── arm920t 我們CPU的類型
├── arm925t
├── arm926ejs
├── arm946es
├── arm1136
├── arm1176
├── arm_cortexa8
├── arm_intcm
├── ixp
├── lh7a40x
├── pxa
├── s3c44b0
└── sa1100
arch/arm/arm/cpu
├── a320
├── at91
├── at91rm9200
├── ep93xx
├── imx
├── ks8659
├── s3c24x0
├── config.mk
├── cpu.c
├── Makefile
├── start.S 整個uboot代碼入口點
└── u-boot.lds
u-boot.lds是ld程式也就是連接器的腳本文件,這個文件描述瞭如何連接目標文件,ld程式會根據這個文件的指示按照需求把不同的目標文件連接在一起生成供燒寫到開發板的程式。
該文件放在board對應的目錄中。
4、移植u-boot的版本選擇情況
由於u-boot的各版本沒有重大變化,各版本移植起來基本相同,也正因為如此,大多數版本均有人移植過,主要是arm體繫結構的。
如cortex A8使用 u-boot-1.3.4;cortex M3 上u-boot-1.1.6、u-boot-1.2.0等均有人移植過。