u-boot2012.04.01编译过程分析
1. 说明
分析编译的打印信息可以大概了解编译链接过程,这次分析的是修改错误过程中的编译信息,所以并不是一个完整的过程。 编译信息在SecureCRT看着太乱,复制到文本编辑器中便于分析。刚开始接触uboot,如存在错误,请见谅! 2. 编译过程
make[1]: Entering
directory ` /u-boot-2012.04.01/arch/arm/cpu/arm1176' make -C
arch/arm/cpu/arm1176 start.o arm-linux-gcc -DCONFIG_SYS_TEXT_BASE=0x57e00000
-o start.o start.S –c (1) make[1]: Leaving
directory ` /u-boot-2012.04.01/drivers make[1]: Entering
directory ` /u-boot-2012.04.01/fs make[1]: Leaving
directory ` /u-boot-2012.04.01/lib make[1]:Enteringdirectory`
/u-boot-2012.04.01/board/samsung/smdk6410 rm-linux-gcc ......
-o lowlevel_init.o lowlevel_init.S -c arm-linux-ld -r -o libsmdk6410.o lowlevel_init.o smdk6410.o nandflash.o UNDEF_SYM=`arm-linux-objdump
…… -lgcc -Map u-boot.map -o u-boot arm-linux-objcopy -O
srec u-boot u-boot.srec arm-linux-objcopy
--gap-fill=0xff -O binary u-boot u-boot.bin
(2) make[1]:Enteringdirectory`/u-boot-2012.04.01/nand_spl/board/samsung/smdk6410 arm-linux-gcc
-DCONFIG_SYS_TEXT_BASE=0 -DCONFIG_NAND_SPL -c -o
start.o start.S (3) arm-linux-gcc
-DCONFIG_SYS_TEXT_BASE=0 -DCONFIG_NAND_SPL -o
lowlevel_init.o lowlevel_init.S arm-linux-ld /u-boot-2012.04.01/nand_spl/u-boot.lds start.o cpu_init.o lowlevel_init.o nand_boot.o nand_ecc.o s3c64xx.osmdk6410_nand_spl.onand_base.o nandflash.o -o /forlinx/ftp/u-boot-2012.04.01/ nand_spl/ u-boot-spl (4) arm-linux-objcopy -O binary u-boot-spl
u-boot-spl.bin (5) arm-linux-objcopy -O binary
u-boot-spl u-boot-spl-16k.bin (6) cat
nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin (7)
说明: (1):在makefile中使用-D定义一个宏,这里定义uboot在SDRAM中的链接地址0x57E00000。 (2):得到uboot.bin,以上过程和旧架构的uboot过程差不多。 (3):修改链接地址,定义宏CONFIG_NAND_SPL,uboot中使用这个宏选择在片内内存中运行的代码。 (4):编译链接片内内存使用的代码,得到u-boot-spl。 (5):得到u-boot-spl.bin (6):得到u-boot-spl-16k.bin (7):把u-boot-spl-16k.bin和u-boot.bin合并为最终的u-boot-nand.bin
Nand_spl/board/samsung/smdk6410目录下的代码都是从其他目录链接过去的,每次执行这个目录里的Makefile时都会删除文件并重新链接,修改这里的代码无效,必须修改源。 # from cpu directory $(obj)start.S: @rm -f $@ @ln -s $(TOPDIR)/arch/arm/cpu/arm1176/start.S $@
|
|
来自: 昵称14410264 > 《uboot》