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中开始。

原文地址:https://www.cnblogs.com/lihanrui/p/13896104.html