设计公司画册零感设计,网站seo哪家好,如何开发一个微信公众号,吉利seo一、配置内核#xff08;Kconfig#xff09;
我们配置内核是实质是根据众多目录下面的Kconfig文件中组合成我们需要的一个最佳选择#xff0c;即最终在根目录下面生成的.config文件#xff0c;而这个文件会在根目录Makefile下调用的。这一部分我们主要讨论整个SEP4020体系…一、配置内核Kconfig
我们配置内核是实质是根据众多目录下面的Kconfig文件中组合成我们需要的一个最佳选择即最终在根目录下面生成的.config文件而这个文件会在根目录Makefile下调用的。这一部分我们主要讨论整个SEP4020体系在内核中各个Kconfig文件是怎么组织的。
1、Make menuconfig的编译生成过程
这部分我们将make menuconfig它是怎末运行和调用哪些文件来实现图形界面的。
我们先来看下我们键入make menuconfig会出现什么
[rootlocalhost linux-v3.3]# make menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/split-include HOSTCC scripts/basic/docproc HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/kxgettext.o HOSTCC scripts/kconfig/mconf.o HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/mconf HOSTCC scripts/kconfig/lxdialog/checklist.o HOSTCC scripts/kconfig/lxdialog/inputbox.o HOSTCC scripts/kconfig/lxdialog/lxdialog.o HOSTCC scripts/kconfig/lxdialog/menubox.o HOSTCC scripts/kconfig/lxdialog/msgbox.o HOSTCC scripts/kconfig/lxdialog/textbox.o HOSTCC scripts/kconfig/lxdialog/util.o HOSTCC scripts/kconfig/lxdialog/yesno.o HOSTLD scripts/kconfig/lxdialog/lxdialog
scripts/kconfig/mconf arch/arm/Kconfig
fs/Kconfig:767:warning: multi-line strings not supported
drivers/usb/gadget/Kconfig:406:warning: type of USB_ZERO_HNPTEST redefined from boolean to tristate
#
# using defaults found in .config
#
*** End of Linux kernel configuration.
*** Execute make to build the kernel or try make help.
从上面我们看到实际上make menuconfig是一个Makefile编译及运行的过程他先编译了一大堆文件最后会生成scripts/kconfig/mconf和scripts/kconfig/lxdialog/lxdialog这两个应用程序其中scripts/kconfig/mconf会调用scripts/kconfig/lxdialog/lxdialog来显示一个对话框的。
然后编译好这两个应用程序后紧接着运行scripts/kconfig/mconf arch/arm/Kconfig
这个应用程序这个程序就读入了我们SEP4020的体系架构的Kconfig然后就显示出了我们见到的那个对话框了。
2、Make menuconfig的Makefile的调用关系
在这部分我们讲下Makefile是怎样一步步构造出menuconfig这个对话框的
1.2.1在顶层的Makefile中可以查找到如下几行定义的规则。 这就是生成内核配置界面的命令规则它也定义了执行的目标和依赖的前提条件还有
要执行的命令。
这条规则定义的目标为config %config 通配符%意味着可以包括config、 xconfig、 gconfig、
menuconfig和oldconfig等。依赖的前提条件是 scripts_basic outputmakefile这些在 Makefile
也是规则定义主要用来编译生成配置工具。
那么这条规则执行的命令就是执行scripts/kconfig/Makefile指定的规则。相当于
make -C scripts/kconfig/ %config-C表示调用scripts/kconfig/目录下的Makefile
这行命令是使用配置工具解析 arch/$(ARCH)/Kconfig 文件生成内核配置菜单。
$(ARCH)变量是 Linux 体系结构定义对应 arch 目录下子目录的名称。Kconfig 包含了内核配置菜单的内容那么 arch/$(ARCH)/Kconfig 是配置主菜单的文件调用管理其他各级
Kconfig。根据配置工具的不同内核也有不同的配置方式。有命令行方式还有图形界面方式。
1.2.2这些内核配置方式是在scripts/kconfig/Makefile中通过规则定义的。从这个 Makefile中可以找到下面一些规则定义。如果把变量或者通配符带进去就可以明白要执行的操作。 执行命令scripts/kconfig/mconf arch/arm/Kconfig
使用lxdialog工具生成光标配置菜单。
1由于mconf没有产生根据Makefile的隐规则会推导生成mconf程序 mconf-objs : mconf.o zconf.tab.o这个可以让多个c文件生成最后的可执行文件mconf
2因为 mconf调用lxdialog工具所以需要先编译scripts/kconfig/lxdialog目录。 这会生成相应的目标文件最后生成lxdialog程序。
最后运行
$ arch/$(ARCH)/Kconfig这个程序。
3、SEP4020相关Kconfig的关系
1.3.1 menuconfig的组织关系图
General setup --- /init/kconfig Loadable module support --- /init/kconfig
[*] Enable loadable module support /block/kconfig System Type --- /arch/arm/kconfig
ARM system type (sep4020) --- /arch/arm/kconfig
SEP4020 Implementations --- /arch/arm/kconfig
--- Processor Type /arch/arm/mm/kconfig
--- Processor Features /arch/arm/mm/kconfig Bus support --- /arch/arm/kconfig Kernel Features --- /arch/arm/kconfig [ ] Dynamic tick timer /kernel/time/kconfig Memory model (Flat Memory) --- /mm/kconfig Boot options --- /arch/arm/kconfig Floating point emulation --- /arch/arm/kconfig Userspace binary formats --- /arch/arm/kconfig /fs/kconfig.binfmt Power management options --- /arch/arm/kconfig /kernel/power/kconfig Networking --- /net/kconfig Device Drivers --- /driver/kconfig File systems --- /fs/kconfig
如果大家想新增一个芯片平台和驱动大家可以根据这个提示去相应的Kconfig文件去添加相应的内容。等make menuconfig后就会在根目录下生成.config文件这个文件会保存所以已经选择的Kconfig选项。 1.3.2 Kconfig的相关知识
1菜单项
多数选项定义一个配置选项其他选项起辅助组织作用。举例说明单个的配置选项
的定义。 config MODVERSIONS bool Set version information on all module symbols depends MODULES help Usually, modules have to be recompiled whenever you switch to a new kernel………
每一行开头用关键字“config”后面可以跟多行。后面的几行定义这个配置选项的属性。
属性包括配置选项的类型、选择提示、依赖关系、帮助文档和缺省值。同名的选项可以重复
定义多次但是每次定义只有一个选择提示并且类型不冲突。
2菜单属性 3Kconfig语法