UBOOT——①顶层Makefile分析

UBOOT——①顶层Makefile分析

  • 一、通识
    • 1、版本号
    • 2、 MAKEFLAGS 变量
    • 3、编译选项
    • 4、常用变量
  • 二、 make xxx_defconfig 过程——生成.config
  • 三、make过程——生成 u-boot.bin
  • 总结


一、通识

1、版本号

VERSION = 2016          //主版本号
PATCHLEVEL = 03			//补丁版本号
SUBLEVEL = 				//次版本号
EXTRAVERSION =          //附加版本信息
NAME =					//名字有关的,一般不使用这两个

2、 MAKEFLAGS 变量

export VARIABLE 		//导出变量给子 make 
unexport VARIABLE    	//不导出变量给子 make

MAKEFLAGS += -rR --include-dir=$(CURDIR)  
MAKEFLAGS /SHELL 值始终自动的传递给子make  除非使用“unexport”声明

-rR : 表示禁止使用内置的隐含规则和变量定义
--include-dir : 指明搜索路径
$(CURDIR): 表示当前目录

3、编译选项

V=1 来实现完整的命令输出
O=out 指定输出目录
C = 1 使能代码检查
M=dir 单独编译某个模块
HOSTARCH 主机架构
HOSTOS 系统
ARCH 架构 //ARCH = arm
CROSS_COMPILE 交叉编译工具 //arm-linux-gnueabihf- (只到 “ - ”)
CC = $(CROSS_COMPILE)gcc //CC 为编译gcc的简短语法

4、常用变量

ARCH = arm
CPU = armv7
BOARD = mx6ullevk
VENDOR = freescale
SOC = mx6
CPUDIR = arch/arm/cpu/armv7
BOARDDIR = freescale/mx6ullevk

ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR
这几个变量定义自config.mk

config.mk:

ARCH := $(CONFIG_SYS_ARCH:"%"=%)      
CPU := $(CONFIG_SYS_CPU:"%"=%)     //"%"=% 取双引号里面的值
.....

= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值

CONFIG_SYS_XXX 定义自 .config文件

定义为: CONFIG_SYS_ARCH = “arm”

.config make xxxx_defconfig 生成

UBOOT——①顶层Makefile分析_第1张图片

二、 make xxx_defconfig 过程——生成.config

流程图:
UBOOT——①顶层Makefile分析_第2张图片
详细参考正点原子linux驱动开发指南
使用conf程序去生成.config 另一种旧版使用mkconfig 去生成config.mk 、config.h

三、make过程——生成 u-boot.bin

UBOOT——①顶层Makefile分析_第3张图片
u-boot.lds 为链接脚本,将 arch/arm/cpu/armv7/start.o 和各个子目录
下的 built-in.o 链接在一起生成 u-boot


总结

make xxx_defconfig:用于配置 uboot,这个命令最主要的目的就是生成.config 文件。
make:用于编译 uboot,这个命令的主要工作就是生成二进制的 u-boot.bin 文件和其他的一些与 uboot 有关的文件,比如 u-boot.imx 等等。

你可能感兴趣的:(UBOOT,uboot)