1.前言
本文主要就Hi3556v200的U-boot+Liteos方案的编译流程做简要介绍,主要通过make过程的打印来逐步理清编译的过程,本文主要介绍u-boot总体编译文件
U-boot版本:u-boot-2016.11
2.u-boot的总体编译目录
u-boot-2016.11
|--arch
| |--arm
| | |--Makefile
| | |--cpu
| | |--armv7
| | |--Makefile
| | |--hi3556v200
| | |--hw_compressed
| | |--Makefile
|--scripts
| |--basic
| | |--Makefile
| |--Kbuild.include
| |--Makefile.build
| |--Makefile.autoconf
| |--Makefile.clean
| |--Makefile.host
| |--Makefile.lib
| |--Makefile.spl
| |--Makefile.uncmd_spl
| |--get_default_envs.sh
| |--kconfig
| | |--Makefile
|--Makefile
|--kbuild
|--u-boot.lds
|--config.mk
-
Makefile
顶层Makefile -
scripts/basic/Makefile
主要是为了生成scripts/basic/fixdep工具 -
scripts/kconfig/Makefile
主要是为了生成conf工具,并完成%config目标的编译 -
scripts/Makefile.build
通用的build文件,通过obj参数传递编译目标,并包含相关的Makefile文件 -
scripts/Makefile.host
主要用于编译host端代码的Makefile -
config.mk
规定了编译的规则,被所有Makefile所调用 u-boot-2016.11/下各级目录Makefile -
scripts/kbuild.include
通用定义,定义了许多通用的变量,如build,if_changed 等重要的变量 -
scripts/get_default_envs.sh
用于将环境变量所在文件转换为.rodata.default_environment段的脚本 -
kbuild
主要用于产生include/generated/generic-asm-offsets.h和include/generated/asm-offsets.h文件;
include/generated/generic-asm-offsets.h定义了struct global_data结构体各元素的偏移宏 -
config.mk
主要定义了交叉编译器及选项和编译规则 -
u-boot.lds
uboot的链接脚本