U-BOOT梳理缓存

U-BOOT1.1.6
配置命令:make 100ask24x0_config
编译命令:make
首先分析配置过程:先看Makefile,搜索100ask24x0_config得
100ask24x0_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0
搜索MKCONFIG得
MKCONFIG := $(SRCTREE)/mkconfig
mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0
再打开mkconfig脚本文件
mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0
$0 $1 $2 $3 $4 $5 $6
BOARD_NAME = 100ask24x0
echo "Configuring for ${BOARD_NAME} board..."
cd ./include
rm -f asm
ln -s asm-$2 asm #ln -s asm-arm asm
rm -f asm-$2/arch #rm -f asm-arm/arch
ln -s ${LNPREFIX}arch-$6 asm-$2/arch #ln -s (空)arch-s3c24x0 asm-arm/arch
rm -f asm-$2/proc
ln -s ${LNPREFIX}proc-armv asm-$2/proc #ln -s (空)proc-armv asm-arm/proc

echo "ARCH   = $2" >  config.mk #>是新建
echo "CPU    = $3" >> config.mk #>>是追加
echo "BOARD  = $4" >> config.mk
内容:
ARCH    = arm
CPU = arm920t
BOARD   = 100ask24x0
[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC    = $6" >> config.mk
SOC = s3c24x0

> config.h      # Create new config file
echo "/* Automatically generated - do not edit */" >>config.h
echo "#include <configs/$1.h>" >>config.h
config.h的内容
/* Automatically generated - do not edit */
#include <configs/100ask24x0.h>

再分析编译过程
OBJS = cpu/\((CPU)/start.o LIBS = lib_generic/libgeneric.a LIBS += board/\)(BOARDDIR)/lib\((BOARD).a LIBS += cpu/\)(CPU)/lib$(CPU).a

$(obj)u-boot: depend version $(SUBDIRS) $(OBJS) $(LIBS) \((LDSCRIPT) UNDEF_SYM=`\)(OBJDUMP) -x $(LIBS) |sed -n -e 's/.*(__u_boot_cmd_.*)/-u\1/p'|sort|uniq`; cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) -Map u-boot.map -o u-boot

通过grep "LDFLAGS" * -nR找到下面这句话
config.mk:189:LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS)
TEXT_BASE:
board/100ask24x0/config.mk

直接执行make命令看信息
UNDEF_SYM=arm-linux-objdump -x lib_generic/libgeneric.a board/100ask24x0/lib100ask24x0.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a net/libnet.a disk/libdisk.a rtc/librtc.a dtt/libdtt.a drivers/libdrivers.a drivers/nand/libnand.a drivers/nand_legacy/libnand_legacy.a drivers/usb/libusb.a drivers/sk98lin/libsk98lin.a common/libcommon.a |sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq;
cd /work/system/u-boot-1.1.6 &&
arm-linux-ld -Bstatic -T /work/system/u-boot-1.1.6/board/100ask24x0/u-boot.lds -Ttext 0x33F80000 $UNDEF_SYM cpu/arm920t/start.o --start-group lib_generic/libgeneric.a board/100ask24x0/lib100ask24x0.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a net/libnet.a disk/libdisk.a rtc/librtc.a dtt/libdtt.a drivers/libdrivers.a drivers/nand/libnand.a drivers/nand_legacy/libnand_legacy.a drivers/usb/libusb.a drivers/sk98lin/libsk98lin.a common/libcommon.a --end-group -Map u-boot.map -o u-boot
看lds文件查看链接顺序,地址等

猜你喜欢

转载自www.cnblogs.com/princepeng/p/11488774.html
今日推荐