UBOOT——①顶层Makefile分析

本文深入剖析了U-Boot的编译过程,包括顶层Makefile的版本号、MAKEFLAGS变量、编译选项及其常用变量的解析。通过makexxx_defconfig生成.config配置文件,然后利用make进行编译,最终产出u-boot.bin。整个流程详细阐述了配置和编译的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、通识

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 生成

在这里插入图片描述

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

流程图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/eccfc8c1abee4c959e3bc9fed5d6a7a0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWV9fQ2Fu,size_20,color_FFFFFF,t_70,g_se,x_16
详细参考正点原子linux驱动开发指南
使用conf程序去生成.config 另一种旧版使用mkconfig 去生成config.mk 、config.h

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

在这里插入图片描述
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 等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值