x210的编译首先要经过配置,之后才能进行编译。我这里使用的是九鼎官方已经做好的x210的uboot 进行编译得到u-boot.bin。uboot的或得路径可以是从uboot的官方、可以是SoC官方、也可以是你用的开发板的厂家。
编译过程:
1、在linux源生目录下配置编译
(1)X210移植过的uboot在开发板光盘的BSP中。
(2)BSP就是board support package(板级支持包,一般由开发板供应商提供),里面的内容就是这个开发板的所有相关的源代码、文档、教程等。
(3)将整个BSP打包文件弄到linux的源生目录中去解压分析,不要在windows中的共享文件夹中解压开。(除非你的代码只在windows下去分析而不去编译,如果你想编译工程就一定不要在windows共享文件夹下,否则会出错),我在共享文件夹下尝试了以下,错误如下:
root@ubuntu:/mnt/hgfs/WinShare/X210/uboot/jiuding/uboot# make x210_sd_config
Configuring for x210_sd board...
ln: failed to create symbolic link ‘asm’: Operation not supported
make: *** [x210_sd_config] Error 1
root@ubuntu:/mnt/hgfs/WinShare/X210/uboot/jiuding/uboot#
提示有一个链接不支持。
(4)解压
root@ubuntu:/usr/local/arm/uboot# ls
uboot_jiuding.tar.bz2
root@ubuntu:/usr/local/arm/uboot# tar -jxvf uboot_jiuding.tar.bz2
完成之后会生成一个uboot,进入之后,会看到以下文件及文件夹:
root@ubuntu:/usr/local/arm/uboot/uboot# ls
api config.mk fs Makefile post
api_examples COPYING image_split mk README
arm_config.mk cpu include mkconfig rules.mk
board CREDITS lib_arm mkmovi sd_fusing
CHANGELOG disk libfdt nand_spl tools
CHANGELOG-before-U-Boot-1.1.5 doc lib_generic net
Changelog_Samsung drivers MAINTAINERS onenand_bl1
common examples MAKEALL onenand_ipl
(5)我们在linux下维持一份uboot,在windows下也维持一份uboot,在我们没有开始任何工作之前,这两份uboot内容一样的,都是九鼎官方的uboot 内容。我们这样做目的是:在linux中进行编译、在windwos下进行代码分析和观看。(windwos下有SourceInsight等很好的工具辅助我们看代码、编辑代码,在linux下编辑和看代码都很麻烦·····)。
2、配置
(1)uboot和linux kernel等复杂项目,都不能直接编译,都要先配置才能编译。
(2)uboot也要先配置,配置方法是:首先cd进入uboot源码的根目录,而且是在Linux环境下的源码,不能是在Windows和Linux的共享文件夹下,在root用户下,在根目录下执行配置命令,并只出现Configuring for x210_sd board… 的提示,说明配置完成,如下:
root@ubuntu:/usr/local/arm/uboot/uboot# make x210_sd_config
Configuring for x210_sd board...
说明配置好了,如果不是这个是别的说明配置出错了。
3、编译得到uboot.bin
(1)编译之前一定要注意检查arm-linux-gcc对不对,检查份2步:
第一步:检查当前编译环境中有没有安装合适的arm-linux-gcc。我们装的是arm-2009q3,因为这个是三星官方、九鼎官方开发uboot时使用的。
root@ubuntu:/usr/local/arm/uboot/uboot# arm-linux-gcc -v
Thread model: posix
gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67)
第二步:检查当前目录下(uboot根目录)的Makefile中编译器的设置是否正确。在工程的总Makefile中会设置交叉编译工具链的路径和名字,必须确保这个路径和名字和我们自己装的一致,否则编译会出错。
使用vi 查看Makefile文件中冠以交叉编译器的配置:
ifeq ($(ARCH),arm)
#CROSS_COMPILE = arm-linux-
#CROSS_COMPILE = /usr/local/arm/4.4.1-eabi-cortex-a8/usr/bin/arm-linux-
#CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
endif
(2)确保了以上2点,即可进行编译。直接make即可。或者可以make -j4 (多线程编译,主机如果是多核心电脑,可以尝试多线程编译,会快一些)
root@ubuntu:/usr/local/arm/uboot/uboot# make -j4
编译之后:
root@ubuntu:/usr/local/arm/uboot/uboot# ls
api CREDITS MAINTAINERS README
api_examples disk MAKEALL rules.mk
arm_config.mk doc Makefile sd_fusing
board drivers mk System.map
CHANGELOG examples mkconfig tools
CHANGELOG-before-U-Boot-1.1.5 fs mkmovi u-boot
Changelog_Samsung image_split nand_spl u-boot.bin
common include net u-boot.dis
config.mk lib_arm onenand_bl1 u-boot.map
COPYING libfdt onenand_ipl u-boot.srec
cpu lib_generic post
root@ubuntu:/usr/local/arm/uboot/uboot#
在uboot的根目录下会生成u-boot.bin的文件,这就是启动文件。