uboot版本檔案結構的更新改變
轉載地址:https://blog.csdn.net/ccccdddxxx/article/details/6800135
本來是開始分析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目錄內容比以前的版本乾淨,每個子目錄代表一個處理器型別,子目錄名稱就是處理器的型別名稱。
我們移植的是mips的處理器,所以參考一下arch/mips目錄:
arch/mips
├── cpu
├── include
└── lib
arch/mips目錄下有三個目錄,其他的處理器目錄下也是這個結構:
cpu子目錄對應一種處理器的不同產品型號或者系列;
include子目錄是處理器用到的標頭檔案;
lib目錄對應用到處理器公用的程式碼;
下面看看cpu下的內容,arch/mips/cpu目錄下的內容:
arch/mips/cpu
├── asc_serial.c
├── asc_serial.h
├── au1x00_eth.c
├── au1x00_serial.c
├── au1x00_usb_ohci.c
├── au1x00_usb_ohci.h
├── cache.S
├── config.mk
├── cpu.c
├── incaip_clock.c
├── incaip_wdt.S
├── interrupts.c
├── Makefile
└── start.S 整個uboot程式碼入口點
目前最新版本(2011.6版本開始)中cpu目錄中建立mips32目錄,把incaip和au1x00也分類放在不同的目錄中。
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等均有人移植過。
考慮到我們目前的編譯器較新,編譯舊版本u-boot時會出現錯誤,警告也很多;新版本的u-boot目錄結構也較清晰,因此選用較新版本的u-boot。
最新版本(2011.06)Makefile中沒有mips的部分,不知道為什麼。(2011.03版本中同樣也是)
u-boot-2010.12的Makefile沒有問題,編譯incaip通過,沒有任何警告和錯誤,因此最終選擇u-boot-2010.12作為我們的移植版本。
相關文章
- 類檔案結構_class類檔案的的結構
- MC官啟使用軟連結改變檔案位置
- angular版本更新與配置檔案問題Angular
- 資料表結構更新後,遷移檔案怎麼使用?
- 檔案的邏輯結構、檔案目錄
- PE 檔案結構圖
- [20181203]改變檔案大小與檢查點.txt
- linux 檔案屬性介紹及改變方法Linux
- 檔案系統的物理結構分配
- 表`t`的INODE結構檔案分析
- 深入解析Class類檔案的結構
- Linux下的檔案系統結構Linux
- PE檔案結構解析3
- PE檔案結構解析2
- PE檔案結構解析1
- PE檔案結構複習
- MachO 檔案結構詳解Mac
- REdis AOF檔案結構分析Redis
- Go基礎知識-01 關鍵字,go檔案的基本結構(持續更新)Go
- 表`t`的XDES Entry結構檔案分析
- 例項分析JAVA CLASS的檔案結構Java
- 深入 LevelDB 資料檔案 SSTable 的結構
- springboot -- 2.0版本自定義ReidsCacheManager的改變Spring Boot
- 【深入】體系結構-002-資料變化如何寫入檔案
- Visual Studio新版本兩項改變
- 二、Linux檔案系統結構Linux
- PostgreSQL DBA(15) - WAL檔案結構SQL
- 網路晶片架構的新改變晶片架構
- 新的Final Cut Pro X版本都有哪些改變呢?
- 軟體巨人改變了 Windows 10 的更新模式Windows模式
- Android Manifest.xml檔案的結構及作用AndroidXML
- struts2的工作原理與檔案結構
- 再探.NET的PE檔案結構(安全篇)
- OBJ模型檔案的結構、匯入與渲染OBJ模型
- 深入淺出Dotnet Core的專案結構變化
- Java IntelliJ IDEA 不能顯示專案裡的檔案結構JavaIntelliJIdea
- 位元組碼檔案結構詳解
- JVM學習--Class類檔案結構JVM