uboot的編譯可分為三個步驟:安裝必要工具、配置、編譯
一、安裝必要工具
在進行開發(fā)之前,還需要一些其他的必要庫,我們使用以下命令逐一安裝:
elf@ubuntu:~$ sudo apt-get install build-essential
elf@ubuntu:~$ sudo apt-get install libncurses* elf@ubuntu:~$ sudo apt-get install lzop elf@ubuntu:~$ sudo apt-get install net-tools |
二、uboot配置
uboot配置是針對不同的功能來選擇不同的配置項。uboot功能有很多,我們在開發(fā)過程中可能需要根據(jù)板卡的不同、平臺的不同或者項目需求差異對uboot功能支持進行調(diào)整,所以就可以通過uboot配置對uboot系統(tǒng)進行功能增加或裁剪。這些功能配置項存儲在configs/目錄下的配置文件(config_file)中,其中不同的配置文件中存儲著不同的功能配置組合,對應不同的板卡、平臺或項目工程。我們使用make <config_file>命令,就可根據(jù)config_file配置項在根目錄下生成或者更新.config文件,在編譯時,編譯器根據(jù)編譯規(guī)則按照.config中的配置進行編譯,具體uboot怎么配置,我們在下面章節(jié)有講解,本章節(jié)主要演示編譯流程,ELF?1開發(fā)板的配置文件為imx6ull_elf1_defconfig。
三、編譯
如果曾經(jīng)編譯過,在編譯之前可以使用make clean命令清除一下中間文件,也可以使用make distclean進行清除,make clean清除上次的make命令所產(chǎn)生的object文件(后綴為“.o”的文件)及可執(zhí)行文件,而make distclean會清除上次編譯生成的所有文件,包括uboot的配置文件.config,所以如果使用make distclean進行清除,就需要在重新編譯之前,再次執(zhí)行make imx6ull_elf1_emmc_defconfig生成.config。
這里我們第一次編譯,執(zhí)行如下命令生成配置文件.config:
elf@ubuntu:~/work/uboot-imx-2016.03-elf1$?make imx6ull_elf1_emmc_defconfig |
直接使用make命令編譯即可:
. /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
elf@ubuntu:~/work/uboot-imx-2016.03-elf1$?make -j4 |
其中-j4表示使用4個處理器核心(我們安裝虛擬機時,配置的處理器核心數(shù)就是4,所以這里最大也只能用4個核心)進行編譯,這樣編譯會快一些。
編譯完成之后在uboot根目錄生成u-boot.imx文件,即是我們最終要燒寫的uboot鏡像文件。
編譯步驟很簡單,我們還可以進一步簡化編譯操作,就是將這些編譯步驟放到一個shell腳本中,直接執(zhí)行腳本進行編譯。我們直接使用建立好的build.sh進行編譯即可。編譯之前,我們看一下腳本內(nèi)容:
其中第2行:CPU是一個變量,通過export CPU='grep -c processor /proc/cpuinfo'
獲取到當前機器的處理器核心數(shù)量賦值給變量CPU,在最后第6行make -j${CPUS}編譯時引用此變量。
第3行:是配置交叉編譯環(huán)境,但是注意,在腳本中配置的交叉編譯環(huán)境只能作用于此腳本運行期間。而在我們的終端界面命令行配置的交叉編譯環(huán)境則會一直作用在整個終端工作周期內(nèi),只要不關閉終端界面或者更換用戶此環(huán)境就有效。
第5行:配置開發(fā)板。
第6行:開始編譯。
執(zhí)行腳本進行編譯:
elf@ubuntu:~/work/uboot-imx-2016.03-elf1$?./build.sh |