mtk是linux内核吗,MTK Kernel Builder

KConfig 流程

关心点1:

kernel builder:

@makeMtk

make -f

mediatek/build/makemtk.mk kernel

@mediatek/build/makemtk.mk

kernel/build.sh

@kernel/build.sh

make mediatek-configs

nice make ${makeflags} ${makedefs}

silentoldconfig

make ${makeflags} ${makejobs}

${makedefs}

mediatek-configs 目标是怎么回事? 原来:

@kernel/Makefile

include

$(srctree)/arch/$(SRCARCH)/Makefile

@kernel/arch/arm/Makefile

include

../mediatek/build/kernel/Makefile

@mediatek/build/kernel/Makefile

.config mediatek-configs:

$(MTK_ROOT_GEN_CONFIG)/kconfig $(MTK_ROOT_GEN_CONFIG)

@echo "[COPY] $< --> $@"

@cp $< $@

@echo "[COPY] $< --> .config"

@cp $< .config

@kernel/Kconfig

source "arch/$SRCARCH/Kconfig"

@alps/kernel/arch/arm/Kconfig

source

"../mediatek/source/kernel/Kconfig"

@alps/mediatek/source/kernel/Kconfig

31 if ARCH_MT6573

32 source

"../mediatek/platform/mt6573/kernel/Kconfig/Kernel"

33 source

"../mediatek/platform/mt6573/kernel/Kconfig/Board"

34 source

"../mediatek/platform/mt6573/kernel/Kconfig/Drivers"

35 endif

@mediatek/platform/mt6573/kernel/Kconfig/Drivers

34 # Frame Buffer Related

35 menuconfig MTK_FB # FB_MT6516

FB_MT6573

36  bool "MediaTek Framebuffer

Driver"

37  depends on FB

38  select FB_CFB_FILLRECT

39  select FB_CFB_COPYAREA

40  select FB_CFB_IMAGEBLIT

41  select FB_SOFT_CURSOR

42  ---help---

43  This

selects the MediaTek(R) frame buffer driver.

44  If you

want to use MediaTek(R) frame buffer diver, say Y here.

45  If unsure,

say N.

关心点2:

menuconfig是从哪里来?这样解释:

@alps/kernel/Makefile

%config: scripts_basic outputmakefile FORCE

$(Q)mkdir -p include/linux include/config

$(Q)$(MAKE) $(build)=scripts/kconfig $@

关于最后的一条命令: 我打印出来是这样的效果:

make -f scripts/Makefile.build obj=scripts/kconfig

menuconfig

不知道$(build)变量是怎么计算出来的,后来发现是这样的:

@kernel/Makefile

329 include $(srctree)/scripts/Kbuild.include

@kernel/scripts/Kbuild.include

156 ###

157 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build

obj=

158 # Usage:

159 # $(Q)$(MAKE) $(build)=dir

160 build := -f $(if

$(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj

这样,就解析出来了上面的东西,

@kernel/scripts/Makefile.build

41 # The filename Kbuild has precedence over

Makefile

42 kbuild-dir := $(if $(filter

/%,$(src)),$(src),$(srctree)/$(src))

43 kbuild-file := $(if $(wildcard

$(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)

44 include $(kbuild-file)

这样就将 kernel/scripts/kconfig/Makefile 包含进去了。

查看文件 kernel/scripts/kconfig/Makefile 也就不用我多说了:

@scripts/kconfig/Makefile

xconfig: $(obj)/qconf

$< $(Kconfig)

gconfig: $(obj)/gconf

$< $(Kconfig)

menuconfig: $(obj)/mconf

$< $(Kconfig)

config: $(obj)/conf

$< --oldaskconfig $(Kconfig)

nconfig: $(obj)/nconf

$< $(Kconfig)

oldconfig: $(obj)/conf

$< --$@ $(Kconfig)

silentoldconfig: $(obj)/conf

$(Q)mkdir -p include/generated

$< --$@ $(Kconfig)

cp -f include/generated/autoconf.h

include/linux/autoconf.h

关心点3:

.config 文件最终还会被更新一次:查看kernel log

[COPY] ../mediatek/config/out/s816_bef/autoconfig/kconfig

--> mediatek-configs

[COPY] ../mediatek/config/out/s816_bef/autoconfig/kconfig

--> .config

HOSTCC

scripts/kconfig/conf.o

SHIPPED scripts/kconfig/zconf.tab.c

SHIPPED scripts/kconfig/lex.zconf.c

SHIPPED scripts/kconfig/zconf.hash.c

HOSTCC

scripts/kconfig/zconf.tab.o

HOSTLD

scripts/kconfig/conf

scripts/kconfig/conf --silentoldconfig Kconfig

#

# configuration written to .config

#

cp -f include/generated/autoconf.h

include/linux/autoconf.h

看kernel config 的程序 scripts/kconfig/conf 里面的代码有:

scripts/kconfig/confdata.c:66:  char *name =

getenv("KCONFIG_CONFIG");

而@Makefile

240:KCONFIG_CONFIG  ?=

.config

export KCONFIG_CONFIG

可以获知这样的信息。

mediatek/config/out/s816_bef/autoconfig/kconfig:

mediatek/config/mt6575/autoconfig/kconfig/platform

mediatek/config/common/autoconfig/kconfig/AEE

mediatek/config/s816_bef/autoconfig/kconfig/project

mediatek/config/out/s816_bef/autoconfig

@echo "[CONFIG] generate

mediatek/config/out/s816_bef/autoconfig/kconfig"

@cat mediatek/config/mt6575/autoconfig/kconfig/platform

mediatek/config/common/autoconfig/kconfig/AEE

mediatek/config/s816_bef/autoconfig/kconfig/project

| python

mediatek/build/tools/config/merge-kconfig.py

>

mediatek/config/out/s816_bef/autoconfig/kconfig

查了一下应该是:

define .mtk.config.generate-auto-merge-rules

.PHONY: mediatek-configs.$(1)

mediatek-configs: mediatek-configs.$(1)

mediatek-configs.$(1): $(2)

$(2): PRIVATE_FILE_LIST := $(3)

$(2): $(3) $(4)

@echo "[CONFIG] generate $(2)"

@cat $(3) | $(5) > $(2)

endef

应该是这样类似的$(call

.mtk.config.generate-auto-merge-rules,kconfig,xx.xx.xx)

更有可能是这样的:$(call

.mtk.config.generate-auto-rules,xx,xx,xx)

这个就要自己去验证了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值