# 文件中去掉了不相关的部分
…
# OBJS变量的赋值,用于标识所有的.o文件(目标文件)
OBJS = cpu/$(CPU)/start.o
ifeq ($(CPU),i386)
OBJS += cpu/$(CPU)/start16.o
OBJS += cpu/$(CPU)/reset.o
endif
…
# LIBS变量的赋值,用于标识所有的.a文件(库文件)
LIBS = lib_generic/libgeneric.a
LIBS += board/$(BOARDDIR)/lib$(BOARD).a
…
LIBS += common/libcommon.a
#######################################################################
# ALL为生成的目标文件
ALL = u-boot.srec u-boot.bin System.map
# 伪定义用于生成$(ALL)指定的文件
all: $(ALL)
# u-boot.srec文件依赖于u-boot文件
u-boot.srec: u-boot
$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@
…
# u-boot文件的生成,依赖于SUBDIRS,OBJS,LIBS和LDSCRIPT
u-boot: depend $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed -n -e \
's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
# LD命令根据指定的命令参数连接OBJS,LIBS文件最终生成u-boot.map和u-boot。
$(LD) $(LDFLAGS) $$UNDEF_SYM $(OBJS) \
--start-group $(LIBS) $(PLATFORM_LIBS) --end-group \
-Map u-boot.map -o u-boot
# 定义clean伪目标,用于清除编译产生的文件
clean:
rm -f tools/img2srec tools/mkimage tools/envcrc tools/gen_eth_addr
…
rm -f board/trab/trab_fkt
# 以下是配置相关的内容
#######################################################################
# 每次进行重新配置的时候都要执行下面的这段代码, 用于清除上个工程留下的文件
unconfig:
@rm -f include/config.h include/config.mk board/*/config.tmp
######################################################################
## XScale Systems
######################################################################
# 这里是针对PXA处理器的相关开发板
lubbock_config : unconfig
@./mkconfig $(@:_config=) arm pxa Lubbock
# 下面增加了我们自己的开发板的配置信息, 内容与上面类似, 不同的是开发板名称
psbec270_config : unconfig
@./mkconfig $(@:_config=) arm pxa psbec270
# 注意到执行上面的config的时候要执行./mkconfig脚本程序, 该程序用于创建头文件,
# 配置uboot使之适应指定的开发板, 调用该脚本程序的时候传入4参数, 分别是:
# $(@:_config=), arm, pxa, psbec270.
# 注意第一个参数$(@:_config=), $@就是本次配置的目标psbec270_config, 然后用
# 替换命令将字符串_config替换为空, 最后将得到psbec270, 由此可以看出, 最后执行
# 的命令是:
# @./mkconfig psbec270 arm pxa psbec270
# 脚本程序见下面分析.
(本文章发表于psbec的个人blog,未经本人许可,不得用于商业用途。任何个人、媒体、其他网站不得私自抄袭;网络媒体转载请注明出处,增加原文链接,否则属于侵权行为。如有任何问题,请留言或者发邮件给psbec,地址)
阅读(1049) | 评论(0) | 转发(0) |