x4412开发板&ibox卡片电脑项目实战1-uboot编译脚本解析

x4412&ibox平台所有源码包统统可以使用一个mk脚本编译。编译uboot的脚本如下:

build_uboot()
{	
	# Compiler uboot
	cd ${BS_DIR_TOP}/uboot || return 1	//进入uboot根目录
	make distclean || return 1	//清除缓存
	make ${BS_CONFIG_BOOTLOADER_UBOOT} || return 1	//配置uboot config文件
	make -j${threads} || return 1		//编译uboot

	# Copy bootloader to release directory
	cp -v ${BS_DIR_TOP}/uboot/ubootpak.bin ${BS_DIR_RELEASE}	//将生成的映像拷贝到out/release目录
	rm ${BS_DIR_TOP}/uboot/bl2.bin //移除bl2.bin
	rm ${BS_DIR_TOP}/uboot/u-boot.bin	//移除u-boot.bin

	# Copy some burnning script to release directory
	cp -v ${BS_DIR_TOP}/uboot/x4412-irom-sd.sh ${BS_DIR_RELEASE}	//将烧写脚本拷到out/release目录
	echo "^_^ uboot path: ${BS_DIR_RELEASE}/ubootpak.bin"	//打印编译成功的提示信息
	return 0
}

执行./mk –u指令时,上面的脚本得到执行,详细的解析见脚本注释。在三星提供的4412 uboot源码中,默认生成了四个映像文件,这意味着我们需要同时更新四个映像,在平时调试uboot时,势必会很不方便。有时候调试时,经常忘记烧写其中某个映像,而且四个映像经常容易混淆,如对应不上,将导致无法启动。为此,我们添加了将四个映像集成到一个映像的功能。默认执行上面的编译脚本后,四个映像将会打包成ubootpak.bin文件,我们只需烧写这一个文件就可以了。

       脚本中的BS_CONFIG_BOOTLOADER_UBOOT被定义为x4412_defconfig,它将关联到uboot的配置文件uboot/include/configs/x4412.h。

       注意脚本里面并没有配置uboot的交叉编译工具,这是因为在uboot根目录的makefile文件中已经配置了,在makefile的159到160行有如下配置:

ARCH=arm
CROSS_COMPILE ?= $(TOPDIR)/../prebuilt/linux-x86/toolchain/arm-2009q3/bin/arm-none-linux-gnueabi-
在源码包中,我们已经将交叉编译工具拷贝到上述目录,因此编译uboot时,我们无需再安装交叉编译工具了。

你可能感兴趣的:(x4412开发板&ibox卡片电脑项目实战1-uboot编译脚本解析)