前言:
本文是根据哔哩哔哩网站上“arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。
引用:
正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com
《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf》
正点原子资料下载中心 — 正点原子资料下载中心 1.0.0 文档
正点原子imx6ull-mini-Linux驱动之Linux I2C 驱动实验(21)-CSDN博客
正文:
本文是 “Arm(iMX6U)Linux系统移植和根文件系统构键篇--5.3讲u-boot顶层Makefile里 xxx_defconfig的执行过程分析实验。本节将参考正点原子的视频教程和配套的正点原子开发指南文档进行学习。
0. 概述
1.U-boot顶层Makefile里 xxx_defconfig的执行过程
1.1 u-boot编译步骤
编译u-boot时三个步骤
make ARCH=arm distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xxx_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j 8
第一条命令 'make distclean' 清理所有的上一次编译生成中间文件,把项目目录清理干净。
第二条命令 'make xxx_defconfig' ,针对开发板硬件型号进行配置,例如,配置指令集,配置cpu型号,配置开发板,配置开发板外围硬件等,最后在 u-boot目录下生成 '.config' 配置文件。
第三条命令‘make -j 8' 指定使用多个8线程编译出uboot,这一步编译u-boot的时引用上面生成的 ".config" 配置文件,根据配置来编译源码。
正点原子的本视频小节,通过 u-boot/ 目录下的顶层Makefile文件
u-boot/Makefile
来分析编译时的第二条命令生成配置文件 'xxx_deconfig' 的执行过程。
make xxx_defconfig
1.2 u-boot 顶层Makefile执行 xxx_deconfig 过程
在u-boot顶层Makefile(u-boot/Makefile,以下提到uboot顶层Makefile都是指这一个文件)中有如下的 Target,使用makefile语法中的通配符 "%","%config" 目标匹配所有的 ’make xxxconfig' 的make命令。
%config:
使用Makefile语法中的通配符 "%", "%config"匹配了所有的 "xxxconfig"的make编译目标,当然我们执行的 'make xxx_defconfig‘ 编译目标也匹配 uboot顶层Makefile中的这一个目标target,执行uboot顶层makefile里的依赖关系和编译命令。
config: scripts_basic outputmakefile FORCE
$(Q)$(MAKE) $(build)=scripts/kconfig $@
%config: scripts_basic outputmakefile FORCE
$(Q)$(MAKE) $(build)=scripts/kconfig $@
从uboot顶层Makefile看到,执行 "xxx_defconfig"命令时,"xxx_defconfig"目标依赖于两个前置依赖,”scripts_basic"和"outputmakefile"。(FORCE是makefile的一个惯常的使用方法,使用FORCE表明依赖于FORCE的目标在makef中总是执行。)
config: scripts_basic outputmakefile FORCE
接下来分析一下 ”scripts_basic"和"outputmakefile" 在 uboot顶层makefile的执行过程,