通过分析README文件可知,编译板子的命令为:make <board_name>_defconfig,那么该如何确定<board_name>?
方式一:
1、在uboot源码目录下执行:make fsmpla_defconfig
2、可见如下所示,打印错误信息
3、通过错误信息分析得,不能在arch/../configs/目录下找到fsmp1a_defconfig这个文件,且<board_name>默认的配置文件存放在该目录下
4、进入arch/../configs/目录,查看配置信息,由于我们的板子为stm32mp157aaa,,因此通过ls stm32mp15*进行查看
方式二:
通过在makefile中查找对应的目标文件,从而找到默认配置文件的名称
1、在uboot源码目录下,打开makefile文件,搜索目标:config,可以找到如下所示,以%config为目标的命令(%表示模式通配符)
%config: scripts_basic outputmakefile FORCE
$(Q)$(MAKE) $(build)=scripts/kconfig $@
2、使用echo命令查看各个变量打印的内容
命令:
结果:
方式三:
通过方式2分析可知, $(Q)就是@符,去掉$@就可以回显执行的命令
1.在uboot源码目录下,打开Makefile文件,搜索目标:config,去掉$(Q)
2.在uboot源码顶层目录下,执行 make fsmp1a_defconfig,会打印如下信息: make -f ./scripts/Makefile.build obj=scripts/kconfig fsmp1a_defconfig = make obj=scripts/kconfig fsmp1a_defconfig
3.通过以上打印信息可知,需要进入到scripts/kconfig目录下,打开Makefile:搜索目标defconfig,并打印变量
变量打印
打印结果如下
6.需要进入到scripts/kconfig目录下,打开Makefile:搜索目标defconfig,将执行语句中$(Q)去掉,执行 make fsmp1a_defconfig,会打印如下信息
8.分析make fsmp1a_defconfig执行内容详解:
scripts/kconfig/conf:通过file命令,查看scripts/kconfig/conf文件,是一个elf可执行文件
--defconfig=arch/../configs/fsmp1a_defconfig:板子参数
Kconfig:是uboot源码顶层目录下配置文件
通过以上分析可知:conf是一个可执行文件,fsmp1a_defconfig和 Kconfig作为参数传递给conf