天天看點

uboot移植之九鼎提供的uboot的檔案夾分析

檔案夾分析

(1)api:提供了uboot在執行時用到的一些函數,這些函數都是硬體無關的,是以和我們的移植沒多大關系

(2)api_examples:api的示例代碼

(3)board:開發闆相關的檔案夾,這個檔案夾裡面存放的一個檔案夾對應一款開發闆或者是一個晶片廠商。我們在config配置的時候就是根據這個檔案夾下面的子檔案夾來選擇開發闆資訊。需要注意一點,由于曆史原因,一開始開發闆種類比較少,是以board存放的子檔案夾就是對應的開發闆,但是随着電子資訊的發展,開發闆越來越多,是以就在uboot檔案夾下的子檔案改成了晶片廠商的名字,然後在晶片廠商的檔案夾下面再存放它們的開發闆資訊。我們在從移植的角度來講,uboot的配置階段就是确定這些檔案夾的路徑,尋找這些資訊,進而來确定我們所使用的的開發闆,是以當board檔案夾的目錄改變時,将會改變檔案的路徑,如果不修改mkconfig和Makefile相關部分,編譯的時候就會提示一些檔案找不到,其根本原因就是檔案的存放路徑和實際的路徑不同。

(4)common:這個檔案夾下放的是一些與具體硬體無關的普遍适用的一些代碼。譬如控制台實作crc校驗的。但是更多的主要是兩類:一類是cmd開頭的,是用來實作uboot的指令系統的;另一類是env開頭的,是用來實作環境變量的。

(5)cpu:這個檔案夾存放的是SoC相關的初始化和控制代碼(比如 序列槽、中斷等SoC内部外設,其中啟動檔案start.S也在這個檔案夾中)

(6)disk:磁盤相關的代碼。

(7)doc:文檔目錄。裡面存放的是uboot相關的說明明檔。

(8)drivers:驅動。裡面存放的是從linux中扣出來的一些必要的驅動,例如網卡 Inand/SD卡等,不同之處是uboot是一個裸機程式,而linux是一個作業系統,是以在驅動的移植時會有所不同。

(9)examples:示例代碼

(10)fs:filesystem檔案系統。uboot雖然是裸機程式,但是它裡面的檔案管理和linux一樣,使用了檔案系統來進行管理,檔案系統在一些單片機上面也有,它并不是作業系統所特有的。

(11)include:頭檔案目錄。uboot中所有的頭檔案都是存放在這個檔案下面的,是以在uboot中頭檔案包含時路徑結構要在這裡去找。

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

(13)libfdt。裝置樹有關的。linux核心在3.4左右的版本的時候更改了啟動傳參的機制,改用裝置樹來進行啟動傳參,進行硬體資訊的描述。

(14)nand_spl。nand相關的代碼。

(15)net。網絡相關的代碼,例如ping tftp nfs指令都是在這個檔案夾下面實作的。

(16)onenand開頭的,是onenand相關的代碼,是三星加的,标準uboot中沒有。

(17)post。

(18)sd_fusing。這裡面代碼實作了燒錄uboot鏡像到SD卡的代碼。

(19)tools。工具,裡面是一些工具類的代碼。譬如mkimage。

本文轉自 菜鳥養成記 51CTO部落格,原文連結:http://blog.51cto.com/11674570/1919773

繼續閱讀