u-boot顶层Makefile
u-boot的配置、编译过程:
1、cd /work/system/u-boot-1.1.6
2、patch -p1 <../u-boot-1.1.6_jz2440.patch 打补丁
3、make 100ask24x0_config 配置u-boot
4、make
① 为了分析上述的命令过程,需要参考u-boot文件下的Makefile文件 搜索 “100ask24x0_config”
分析上面的命令,需要知道各个部分是什么意思,搜索"MKCONFIG“:
可以知道 ”MKCONFIG“ 就是指mkconfig
所以在上面配置中键入命令 make 100ask24x0_config,所表示的意思就是
mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0
所以为了分析上面的命令是什么意思,需要去分析u-boot文件下的mkconfig文件。
② 在mkconfig文件中
mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0 分别对应着
$0 $1 $2 $3 $4 $5 $6
③ mkconfig文件分析完成,也就是u-boot的配置过程结束,所以下面就要分析顶层目录下的Makefile,来分析 make 命令发生了什么。
在顶层makefile文件中可以看到,包含了上面配置的文件config.mk
配置交叉编译工具链
一堆链接库
make的目标 all后的所有东西
我们的目标u-boot.bin需要先生成 u-boot文件 u-boot文件就是u-boot.elf文件(二进制文件)
而u-boot文件需要用到下面的命令:
其中 LDFLAGS 表示链接文件:在ubuntu中搜索可以查到 :grep "LDFLAGS" * -nR
所以继续搜索TEXT_BASE : grep "TEXT_BASE" *-nR
可以看出,u-boot的链接地址是在0x33F80000
为了分析方便,可以直接在ubuntu中键入 make ,然后再反推下面命令的意思
从上面的输出结果分析一波:
链接文件时 /work/system/u-boot-1.1.6/board/100ask24x0/u-boot.lds
第一个执行的文件是 cpu/arm920t/start.S
所以下面的任务就是从第一个文件 start.S中开始。