UBOOT之分析编译过程 make

打开Makefile
在这里插入图片描述
117行的config.mk就是前面配置过程中生成的config.mk ,里面定义了ARCH CPU BOARD SOC
在这里插入图片描述
165行是顶层目录中的config.mk,根据上面四个变量的值确定编译器、编译选项等
在这里插入图片描述
而在Makefile中$(BOARD)=smdk2410
所以BOARDDIR=smdk2410
继续看顶层目录的.mk
在这里插入图片描述
展开就是sinclude /board/smdk2410/config.mk,在这个.mk文件中定义了TEXT_BASE = 0x33F80000
在这里插入图片描述
LDSCRIPT是一个重要的参数,展开就是
LDSCRIPT := /board/smdk2410/u-boot.lds

在这里插入图片描述
展开就是
LDFLAGS += -Bstatic -T /board/smdk2410/u-boot.lds -Ttext 0x33F80000
接着Makefile看
在这里插入图片描述
发现第一个OBJS = cpu/$(CPU)/start.o
展开就是 OBJS = cpu/ arm920t/start.o
在这里插入图片描述
193-214指定了开发板平台各个目录和通用目录下相应的库
OBJS 和LIBS所代表的.o 、.a文件就是U-Boot的构成
OBJS和LIBS按照自己的规则编译生成.a .o文件
先链接生成elf格式的uboot,最后转换为uboot.bin、uboot-srec.
LDFLAGS确定了链接方式 -T /board/smdk2410/u-boot.lds -Ttext 0x33F80000 指定了程序的布局、地址
u-boot.lds内容如下

在这里插入图片描述
cpu/arm920t/start.o被放在程序的最前面,所以uboot入口点在 cpu/arm920t/start.s
综上,编译流程:
在这里插入图片描述

阅读更多

没有更多推荐了,返回首页