分享

u-boot2012.04.01编译过程分析

 昵称14410264 2013-12-23

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定义一个宏,这里定义ubootSDRAM中的链接地址0x57E00000

(2)得到uboot.bin,以上过程和旧架构的uboot过程差不多。

(3)修改链接地址,定义宏CONFIG_NAND_SPLuboot中使用这个宏选择在片内内存中运行的代码。

(4)编译链接片内内存使用的代码,得到u-boot-spl

(5)得到u-boot-spl.bin

(6)得到u-boot-spl-16k.bin

(7)u-boot-spl-16k.binu-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 $@

 

文件

自带

cpu/1176

smdk6410

./nand_spl

./driver/

mtd/nand

备注

Config.mk

 

 

 

 

 

 

u-boot.lds

 

 

 

 

 

 

Start.S

 

 

 

 

 

 

Cpu_init.S

 

../s3c64xx/

 

 

 

 

Lowlevel_init.S

 

 

 

 

 

 

Smdk6410_

nand_spl.c

 

 

 

 

 

 

u-boot-nand.lsd

 

 

 

 

 

 

Nand_boot.c

 

 

 

 

 

 

S3c64xx.c

 

 

 

 

 

 

Nand_base.c

 

 

 

 

 

 

Nand_ecc.c

 

 

 

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多