uboot構建框架1-總覽

uboot版本:2016.03

開發板:米爾科技imx6ull單板機

編譯器:arm-poky-linux-gnueabi-gcc,version5.3.0。由yocto SDK編譯生成。

編譯器的安裝和生效,請參考米爾開發板的手冊。安裝完編譯器之後,我們source一下環境即可:

source environment-setup-cortexa7hf-neon-poky-linux-gnueabi

至此,環境變量裏面就設置了一些主要變量,我們列出幾個最爲重要的變量:

CC=arm-poky-linux-gnueabi-gcc  -march=armv7ve -marm -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/home/sunke/work/fslImageQt5Sdk/sysroots/cortexa7hf-neon-poky-linux-gnueabi
ARCH=arm
RANLIB=arm-poky-linux-gnueabi-ranlib
OBJCOPY=arm-poky-linux-gnueabi-objcopy
LD=arm-poky-linux-gnueabi-ld  --sysroot=/home/sunke/work/fslImageQt5Sdk/sysroots/cortexa7hf-neon-poky-linux-gnueabi
PWD=/home/sunke/work/MYiR-iMX-uboot
STRIP=arm-poky-linux-gnueabi-strip

這樣,CC指定爲我們使用的交叉編譯器,體系結構ARCH指定爲arm。

根據米爾科技提供的說明手冊,編譯uboot使用如下幾個命令:

sunke@droresrv:~/work/MYiR-iMX-Uboot$ make distclean

sunke@droresrv:~/work/MYiR-iMX-Uboot$ make mys_imx6ull_14x14_nand_defconfig

sunke@droresrv:~/work/MYiR-iMX-Uboot$ make

最後會編譯生成u-boot.imx,u-boot.bin等文件,u-boot.imx可以用來燒寫nandflash。

以上命令看起來非常簡潔,第一個和第三個基本上不用過多解釋,學過make腳本的都會比較清楚。那麼第二個命令主要做了什麼事情呢?第二個命令產生的結果又是怎麼樣的?帶着這些問題,我們來深入挖掘一下uboot的構建框架。

以上三個命令是米爾手冊裏面提供的編譯指令,實際上,我們也清楚,編譯uboot、kernel之前可以進行配置,我們熟悉的一個配置命令是:

sunke@droresrv:~/work/MYiR-iMX-Uboot$ make menuconfig

這條命令會打開一個簡易的圖形配置界面,大體形態如下:

在這個配置界面中,可以根據自己的需要,對各種選項進行配置。配置完成之後,會生成一個配置文件,最終make的時候,會根據這個配置文件來選擇編譯哪些文件以及打開關閉哪些特性。至於這裏面的具體細節,後面會進行詳細分析。

還有一個比較重要的命令是:

sunke@droresrv:~/work/MYiR-iMX-Uboot$ make help

該命令可以查看所有的幫助信息。說來也正常,沒有這麼一個幫助信息,誰能記得住那麼多命令功能。該命令輸出大致如下:

這裏面看起來命令衆多,但我們不一一分析,因爲當我們把幾個主要的命令瞭解之後,剩下的很容易舉一反三,自己看看就會了。所以,接下來我們需要深入分析以下幾個方面的內容,可以按順序閱讀:

(1)kbuild框架簡要分析

(2)make menuconfig命令的過程追蹤

(3)make *defconfig命令的過程追蹤

(4)配置文件和make過程是如何聯繫起來的

(5)u-boot.bin生成過程追蹤

(6)u-boot.imx生成過程追蹤

(7)built-in.o的編譯過程追蹤;

(8)目標文件(.o)的編譯過程追蹤;

(9)make distclean命令的過程追蹤;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章