uboot之uboot編譯實踐和內部目錄介紹
編譯實踐
一、關於uboot的原始碼編譯生成uboot.bin
1、我用的是朱有鵬老師的課程所以我有官方已經移植好的uboot原始碼所以我只是講一下
uboot編譯的過程和結果。(這是原始碼解壓包的名稱 qt_x210v3_130807.tar.bz2)
2、配置:
(1)、uboot和linux kernel等複雜專案,都不能直接編譯,都需要先配置才能編譯。
(2)、先進入uboot原始碼的根目錄,然後在根目錄下執行:make x210_sd_config。
(3)、如果出現Configuring for x210_sd_board...那麼配置成功。
配置成功。
3、編譯得到uboot.bin
(1)、檢查當前編譯環境中有沒有安裝合適的arm-linux-gcc。我們裝的是arm-2009q3,
因為這個是三星官方、九鼎官方開發uboot時使用的。
(2)、檢查當前目錄下(uboot根目錄)的Makefile中編譯器的設定是否正確。在工程的
總Makefile中會設定交叉編譯工具鏈的路徑和名字,必須確保這個路徑和名字和我
們自己裝的一致,否則編譯會出錯。
(3)、確保了以上2點,即可進行編譯。編譯很簡單,直接make即可。或者可以make -j4
(多執行緒編譯,主機如果是多核心電腦,可以嘗試多執行緒編譯,會快一些)。
可以在倒數第二列的最面看見我們編譯生成的uboot.bin。
目錄分析
1、九鼎官方uboot和三星原版uboot對比
2、不同版本的uboot或者同一版本不同人移植uboot,可能目錄結構和檔案內容都有所不同。
3、九鼎在以三星的uboot為原材料進行移植時,把三星原版中很多不必要的資料夾都刪除了。
減小不必要的檔案,可以減小整體的檔案數量,便於工作。
二、關於檔案內容簡介
1、.gitignore。git工具的檔案,git是一個版本管理工具(類似的還有個svn),這個檔案和git有關,
和uboot本身無關的,不用去管。
2、arm_config.mk。字尾是.mk,是一個Makefile檔案,將來在某個Makefile中會去呼叫它。
3、三個Changlog檔案,修改記錄檔案,改檔案記錄了這個uboot專案的版本變遷以及每個版本。正
式的專案都有這些記錄的。可以直接忽略,主要是給維護人員用的。
4、config.mk。和arm_config.mk差不多性質。
6、CREDITS。鳴謝,裡面記錄了對uboot有貢獻的人,感謝目錄。
7、image_split。一個指令碼,看說明是用來分割uboot.bin到BL1的,暫時用不到。
8、MAINTAINERS。維護者,就是當前在參與維護uboot原始碼的社群工作者。
9、MAKEALL。一個指令碼,應該是幫助編譯uboot的。
10、Makefile。這個很重要,是uboot原始碼的主Makefile,將來整個uboot被編譯時就是用Makefile
管理編譯的。
11、mk。快速編譯的指令碼,其實就是先清理然後配置然後編譯而已。
12、mkconfig。這個很重要,是uboot配置階段的主要配置指令碼。uboot的可移植性很大程度就是靠
這個配置指令碼在維護的。
13、mkmovi。暫時不去管他,一個指令碼,和iNand/SD卡啟動有關。
14、README。所有的軟體都有README,一般拿到一個東西要先讀README,這個東西其實就是
個簡單的使用說明書。
15、rules.mk。這個檔案是我們uboot的Makefile使用的規則,本身非常重要,但是我們不去分析他,
不去看他。
16、api. 硬體無關的功能函式的API。uboot移植時基本不用管,這些函式是uboot本身使用的。
17、api_examples. API相關的測試例項程式碼。
18、board。board是板的意思,板就是開發板。board資料夾下每一個檔案就代表uboot曾被移植
到。
20、CPU。這個目錄是SoC相關的,裡面存放的程式碼都是SoC相關初始化和控制程式碼。每個子檔案
都是一個系列的SoC的初始化。
21、disk。和磁碟相關的。
22、doc。文件目錄,裡面存放了很多uboot相關文件。這些文件可以幫助我們理解uboot程式碼。
23、drivers。顧名思義,驅動。這裡放的就是從linux原始碼中摳出來的原封不動的linux裝置驅動,
主要是開發板上必須用到的一些驅動。主要是開發板上必須用到的一些驅動。uboot中的驅動
是linux驅動的一部分。
24、example。示例程式碼,沒用過。
25、fs。filesystem,檔案系統。這個也是從linux原始碼中移植過來的,用來管理Flash等資源。
26、以lib_開頭的一些檔案,(典型的lib_arm和lib_generic)架構相關的庫檔案。譬如lib_arm裡面
就是arm架構使用的一些庫檔案。lib_generic裡是所有架構通用的庫檔案。這類資料夾中的內容
移植時基本不用管。
27、libfdt。裝置樹有關的。linux核心在3.4左右的版本的時候更改了啟動傳參的機制,改用裝置樹來
進行啟動傳參,進行硬體資訊的描述了。
28、nand_spl。nand相關的,不講。
29、net。網路相關的程式碼,譬如uboot中的tftp nfs ping命令 都是在這裡實現的。
30、onenand開頭的,是onenand相關的程式碼,是三星加的,標準uboot中應該是沒有的。
31、post。沒關注過,不知道幹嘛的。
32、sd_fusing。這裡面程式碼實現了燒錄uboot映象到SD卡的程式碼。後面要仔細研究的。
33、tools。裡面是一些工具類的程式碼。譬如mkimage。
總結:以上這些檔案中,比較重要的是mkconfig和Makefile。
歡迎各位指出不足之處
相關推薦
uboot之uboot編譯實踐和內部目錄介紹
編譯實踐 一、關於uboot的原始碼編譯生成uboot.bin 1、我用的是朱有鵬老師的課程所以我有官方已經移植好的uboot原始碼所以我只是講一下
UBOOT之分析編譯過程 make
開啟Makefile 117行的config.mk就是前面配置過程中生成的config.mk ,裡面定義了ARCH CPU BOARD SOC 165行是頂層目錄中的config.mk,根據上面四個變數的值確定編譯器、編譯選項等 而在Makefile
Linux之檔案處理命令和常見目錄
一、目錄或檔案處理命令: 1、建立目錄: mkdir -p [目錄名] -p:遞迴建立 注意:沒有-p 時,只能建立一級目錄;目錄也是檔案,稱為目錄檔案 2、切換所在目錄: cd [目錄] cd ~ :進入當前家目錄 cd - :返回上一次目錄 cd … :進入上一級目
uboot之uboot中的硬體驅動
一、uboot和linux驅動 1、uboot本身是裸機程式,裸機程式是沒有驅動概念的 2、裸機程式是直接操控硬體的,作業系統中必須通過驅動來操控硬體。這兩個的區別在於分層。 3、uboot的虛擬地址對硬體操作的影響 (1)、作業系統(linu
uboot之uboot中環境變數
一、環境變數基礎 1、環境變數的作用 讓我們可以不用修改uboot的原始碼,而是通過修改環境變數來影響uboot執行時的一些資料和特性。譬如說通過 修改bootdelay環境變數就可以更改系統開機自動啟動時倒數的秒數。 2、環境變數優先
【小家java】java8新特性之---外部迭代和內部迭代(對比效能差異)
相關閱讀 從一個案例開始:遍歷一個集合 外部迭代 最傳統的方法是用Iterator,當然還以用for i、增強for迴圈等等。這一類方法叫做外部迭代,意為顯式地進行迭代操作,即集合中的元素訪問是由一個處於集合外部的東西來控制的,在這裡控制著迴圈的東西就是
servlet學習之servlet中cookie和session的介紹
前言 記得在校招的時候總是會問及怎樣解決http的無狀態問題,其實自己知道有隱藏表單,cookie,令牌,session等技術可是具體的流程及由來,還有應用我是一臉懵逼的。。。 大綱 Cookie概述Cookie使用的三個步驟Cookie的機制Cookie的安全問題Sess
五.linux開發之uboot移植(五)——uboot配置和編譯過程詳解
一.uboot主Makefile分析1 1、uboot version確定(Makefile的24-29行) Makefile程式碼部分 (1)uboo
uboot移植之配置編譯過程詳解4
/**************************************************************** uboot的連結指令碼:u-boot.lds 時間:2018年11月下旬 &
uboot移植之配置編譯過程詳解3
/************************************************************************************** 2018.10下旬 針對三星官方為210移植過的
uboot移植之配置編譯過程詳解2
/*********************************************************************************** 2018.11月
uboot之原始碼目錄分析
(1).gitignore。git工具的檔案,git是一個版本管理工具(類似的還有個svn),這個檔案和git有關,和uboot本身無關的,不用去管。 (2)arm_config.mk。字尾是.mk,是一個Makefile檔案,將來在某個Makefile中會去呼叫它。 (3)三個Changelog檔
三.linux開發之uboot移植(三)——.基礎之shell和Makefile回顧
一.補基礎之shell 1.shell程式執行的執行有多種方法,這裡介紹三種方法: 第一種:./xx.sh,和執行二進位制可執行程式方法一樣。這樣執行shell要求shell程式必須具有可執行許可權。chmod a+x xx.sh來新增可執行許可權。 第二
建立LINUX開發環境並編譯LINUX和UBOOT以及生成裝置樹過程總結
檔案linux-digilent-3.6-digilent-13.01.zip 檔案u-boot-digilent-digilent-v2012.04.zip /WORK/Linux_Digilent/linux-digilent-3.6-digilent-13.01/ar
uboot移植之uboot和kernel的引數傳遞
從uboot啟動核心的形式theKernel (0, machid, bd->bi_boot_params) 可以看出uboot給核心傳遞了3個引數,第1個是0,第2個是機器碼,第3個是引數列表在SDRAM的起始位置 剛好滿足一下呼叫核心的條件• R0=0。 • R1
新版uboot配置、編譯
size www target ref tle 移植 targe font mil 轉載文章來至於: http://www.linuxidc.com/Linux/2015-02/112934.htm新版uboot配置、編譯
Python之路-目錄規範和不同目錄間進行模塊調用
base 轉換成 arm 環境變量 規範 有環 路徑 pytho package 目錄規範: 預備知識: 要實現不同目錄間進行模塊調用必須在當前文件夾中創建一個空的__init__.py的文件(pycharm會在創建python package的時候自動創建),有
uboot之位置無關代碼解析
nor flash 初始 處理器 特性 直接 全局函數 判斷 編譯 但是 在之前的話 新年過去了,那麽久沒有好好學習,感覺好頹廢,現在就uboot的一些基礎問題做一些筆記,順便分享給大家,不過由於見識有限,如果有不足之處請多多指教。 位置無關?什麽意思?我們先了
從0移植uboot(三) _編譯最小可用uboot
for 移植 腳本 wid fine been dbo 設備 var 來源:Linux社區 作者:xiaojiang1025 :http://www.linuxidc.com/Linux/2017-02/141020.htm 前兩篇介紹了uboot-
CMMI之功能點估算法---內部邏輯文件和外部接口文件
組織 種類型 字段 圖片 信息 cmm 程序 執行 external 功能點分析的步驟 在本文中將以國際標準IFPUG(International Function Point Users Group)組織提供的功能點估算法V4.1.1為基礎與大家進行講解。