首先是U-boot源码的来源,由于使用的是TI的BBB板子,所以TI自然也提供了自己定制的u-boot源码,该源码就在TI-SDK包中有,另外该安装包中的u-boot版本是2013.10版本,内核版本为3.12.10,除了源码包还自带工具链。
TI-SDK最新版下载链接:http://software-dl.ti.com/sitara ... test/index_FDS.html
当然,还有另外一个德国佬官方的u-boot源码,网站首页:http://www.denx.de/en/News/WebHome和Git代码库:git://www.denx.de/git/u-boot.git。
以官方u-boot为例进行u-boot的编译,进入源码根目录可以看到内容如下,- zhouyu@zhouyu-virtual-machine:~$ cd u-boot/
- zhouyu@zhouyu-virtual-machine:~/u-boot$ ls
- api configs dts Kconfig Makefile snapshot.commit
- arch CREDITS examples lib net spl
- board disk fs Licenses post test
- common doc include MAINTAINERS README tools
- config.mk drivers Kbuild MAKEALL scripts
复制代码 其中打开根目录下的Makefile文件,可以查看到本源码的版本,如下图:
step1:在进行任何操作之前,先清除源码树,- zhouyu@zhouyu-virtual-machine:~/u-boot$ make distclean
- CLEAN scripts/basic
- CLEAN scripts/kconfig
- CLEAN include/config include/generated spl
- CLEAN .config include/autoconf.mk include/autoconf.mk.dep include/config.h
- zhouyu@zhouyu-virtual-machine:~/u-boot
复制代码 step2:编译之前的配置工作
- zhouyu@zhouyu-virtual-machine:~/u-boot$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 O=am335x_beaglebone_black am335x_boneblack_defconfig
- GEN /home/zhouyu/u-boot/am335x_beaglebone_black/Makefile
- HOSTCC scripts/basic/fixdep
- HOSTCC scripts/kconfig/conf.o
- SHIPPED scripts/kconfig/zconf.tab.c
- SHIPPED scripts/kconfig/zconf.lex.c
- SHIPPED scripts/kconfig/zconf.hash.c
- HOSTCC scripts/kconfig/zconf.tab.o
- HOSTLD scripts/kconfig/conf
- #
- # configuration written to .config
- #
- #
- # configuration written to spl/.config
- #
- zhouyu@zhouyu-virtual-machine:~/u-boot
复制代码 make之后的第一个参数向Makefile指明了编译的目标体系结构,第二个参数向Makefile指明了使用哪个编译工具链,第四个参数告诉make程序,这个编译任务要分配4个线程来并行进行,以加快编译速度,通常这个数依据自己的处理器的核数来选择,一般选择2倍核数,第五个参数告诉Makefile编译时产生的中间文件以及最后的结果都存放在源码树根目录下的am335x_beaglebone_black文件夹中,这对于使用同一个源码树来编译多个不同配置的u-boot时是一个很好的选择。最后一个参数向Makefile指明了要使用哪个文件来进行具体的配置,最后所有的配置都将写进源码树根目录下面的.config文件中。
而至于具体后面应该跟一个什么样的配置参数,可以从下图中寻找答案
在源码树的configs文件夹中可以看到很多配置文件,我选择的是第一个红线框的配置文件。
step3:正式开始编译工作编译工作至此完成。得到的结果如下图
图中所示文件和文件夹都在O=am335x_beaglebone_black所指定的文件夹中。 u-boot——ELF格式的可执行文件,由于里面含有调试程序所选的信息,所以该格式的可执行文件体积最大。 u-boot.bin——可以直接写入Flash的二进制可执行文件,直接被运行。 u-boot.srec——u-boot映像的S-Record格式 u-boot.map——这个文件包含了u-boot可执行文件的映像符号表 MLO——这个文件也是一个引导加载程序,用于加载u-boot.img到SDRAM。
u-boot-spl.bin——这个文件实际上就是纯粹的SPL程序,和上图的MLO文件相比,MLO=头部信息+u-boot-spl.bin。
具体使用那个文件根据自己的需要选择。
从SD卡启动时,应该把MLO、u-boot.img文件放到boot分区。
从串口启动时,应该传送u-boot-spl.bin、u-boot.img文件。
转自博客zy812248258
|