stm32mp157a—u-boot配置流程

显示配置过程执行的命令

1、在执行过程中加入V=1,打开开关就能显示执行 make ***_config过程中执行的命令:
ubuntu > make V=1 stm32mp15_fsmp1a_basic_defconfig
2、通过顶层Makefile文件可以查看到没有%defconfig目标,但是有%config目标

%config: scripts_basic outputmakefile FORCE
   (Q)$(MAKE) $(build)=scripts/kconfig $@ 

替换命令为,也就是在执行配置的时候执行了这三条命令:

make –f uboot-stm32mp-2020.01/Makefile.build  obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make –f uboot-stm32mp-2020.01/scripts/Makefile.build obj = scripts/kconfig  stm32mp15_fsmp1a_basic_defconfig

3、上述%config目标执行命令的解析:
1)、变量$(Q)是显示或隐藏命令的开关,该变量在当前Makefile中定义。定义如下:

ifeq ("$(origin V)", "command line")
  KBUILD_VERBOSE = $(V) 
endif
ifndef KBUILD_VERBOSE
  KBUILD_VERBOSE = 0
endif
ifeq ($(KBUILD_VERBOSE),1)
  quiet =
  Q =
else
  quiet=quiet_
  Q = @
Endif

2)、变量$(MAKE)是make系统的内置变量,它的值是make。

3)、变量$(build)的定义可以在uboot-stm32mp-2020.01/scripts/Kbuild.include文件中找到,当前Makefile中引入了Kbuild.include,所以可以使用该文件中定义的变量。引入方式如下:

include scripts/Kbuild.include
build := -f $(srctree)/scripts/Makefile.build obj

4)、scripts_basic目标在顶层Makefile文件下,内容如下:

scripts_basic:
      $(Q)$(MAKE) $(build)=scripts/basic
      $(Q)rm -f .tmp_quiet_recordmcount

5)、outputmakefile目标定义同样在顶层Makefile文件,内容如下:

outputmakefile:
    ifneq ($(KBUILD_SRC),)
     $(Q)ln -fsn $(srctree) source
     $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
     $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)

第三条命令详解:

我们发现配置过程中最终的命令还是第三条命令:这条命令的目标依然是stm32mp15_fsmp1a_XXXX_defconfig,使用的文件是./scripts/Makefile.build。该文件引入了另一个文件./scripts/kconfig/Makefile。在这个Makefile中有一个条规则

%_defconfig: $(obj)/conf                                                         
  $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)

该规则下的命令被执行。它就是配置过程中执行的最后一条命令:
注:使用文件./scripts/Makefile.build引入文件./scripts/kconfig/Makefile

54 # The filename Kbuild has precedence over Makefile                                         
55 kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
56 kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile
57 include $(kbuild-file)
### 最终执行的命令为:
 scripts/kconfig/conf  --defconfig=arch/../configs/stm32mp15_fsmp1a_XXX_defconfig Kconfig

配置结果

根据最终的命令分析,scripts/kconfig/conf是一个可执行程序,它生成.config文件,并输出了以下信息:

configuration written to .config

查看.config文件,makefile根据.config文件中的变量信息,确定哪些文件编译,那些文件不编译(适配和裁剪的过程)
CONFIG_SYS_ARCH=“arm”
20 CONFIG_SYS_CPU=“armv7”
21 CONFIG_SYS_SOC=“stm32mp”
22 CONFIG_SYS_VENDOR=“st”
23 CONFIG_SYS_BOARD=“stm32mp1”
24 CONFIG_SYS_CONFIG_NAME=“stm32mp1”

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值