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

这条命令会打开一个简易的图形配置界面,大体形态如下:

uboot构建框架1-总览_第1张图片

在这个配置界面中,可以根据自己的需要,对各种选项进行配置。配置完成之后,会生成一个配置文件,最终make的时候,会根据这个配置文件来选择编译哪些文件以及打开关闭哪些特性。至于这里面的具体细节,后面会进行详细分析。

还有一个比较重要的命令是:

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

该命令可以查看所有的帮助信息。说来也正常,没有这么一个帮助信息,谁能记得住那么多命令功能。该命令输出大致如下:

uboot构建框架1-总览_第2张图片

这里面看起来命令众多,但我们不一一分析,因为当我们把几个主要的命令了解之后,剩下的很容易举一反三,自己看看就会了。所以,接下来我们需要深入分析以下几个方面的内容,可以按顺序阅读:

(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命令的过程追踪;

你可能感兴趣的:(uboot,linux内核及驱动,kbuild)