• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之Kconfig介绍

2025/01/04
890
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

Kconfig作用

之前章节中,讲解了使用make menuconfig图形化界面来配置内核,而界面中这些选项菜单列表主要是由arch/arm/下Kconfig输出给menuconfig工具。我们将一个新的驱动程序添加进内核,只需要我们按照一定的格式将此驱动信息添加进该驱动所属的Kconfig中,menuconfig工具就可以识别到这种格式,并将新的驱动信息呈现到配置选项菜单列表中,下面简单讲解一下Kconfig语法规则。

Kconfig语法

Kconfig文件描述了菜单选项,每行都是以关键字开头,我们逐一解释关键字意义:

config

config <symbol>

<config options>

config是关键字,表示一个配置选项的开始;紧跟着的<symbol>是配置选项的名称。

例如上图中:

config是关键字,紧跟着的VXLAN是配置选项的名称,其实省略了前缀"CONFIG_"

tristate表示变量类型,即"CONFIG_VXLAN"的类型,有5种类型:bool,tristate,string,hex和int,其中bool类型变量的值:y和n;tristate类型变量的值:y,n和m;string变量的值:字符串;hex类型变量的值:是一个十六进制的数据;int类型变量的值:是一个整型的数据。

tristate之后的字符串“Virtual eXtensible Local Area Network (VXLAN)”是提示信息,在配置界面中上下移动光标选中它时,就可以通过按空格或回车键来设置CONFIG_VXLAN的值。

depends on:表示依赖于XXX,“depends on IENT”表示只有当IENT配置选项被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项。

select:当前选项选中后则select后指定的选项自动被选择。

比如我们在图形界面中选中CONFIG_VXLAN这一项,CONFIG_VXLAN类型为tristate,所以可通过空格选择此项是y,n,m:

然后在.config文件中就多出一项:

#CONFIG_NET_TEAM is not set

#CONFIG_MACVLAN is not set

#CONFIG_IPVLAN is not set

#CONFIG_VXLAN = y

#CONFIG_NETCONSOLE is not set

Makefile文件会根据这项配置选择编译该功能驱动。

menuconfig

menuconfig <symbol>

<config options>

此关键字是一个菜单名称,该菜单名下有一系列的配置选项,只有选中该菜单项后,才会呈现该菜单下的配置选项。例如下图,使用if/endif语句判断NEW_LEDS选项是否被选中,如果被选中,则会出现LEDS_CLASS,LEDS_CLASS_FLASH等配置选项。

choices

choice

<choice options>

<choice block>

endchoice

该关键字定义了一组配置选择项,用户只能在这些配置项中选择一项。比如,RTC支持多种型号时钟芯片,我们只能选择其中一种:

comment

comment <prompt>

<comment options>

这里定义了在配置过程中显示给用户的提示信息。

例如:

menu

menu <prompt>

<menu options>

<menu block>

endmenu

这里定义了一个简单的菜单名,与menuconfig关键字的菜单名不同,menuconfig关键字的菜单名自身可配置,menu关键字的菜单名不可配置。

如下图,menu关键字之后是USB HID support菜单名。

source

source用于引用读取其他目录中Kconfig文件,如:

menu " Device Drivers "

source " drivers/amba/Kconfig "

source " drivers/base/Kconfig "

source " drivers/bus/Kconfig "

source " drivers/connector/Kconfig "

source " drivers/mtd/Kconfig "

source " drivers/of/Kconfig "

source " drivers/parport / Kconfig "

source " drivers/pnp/Kconfig "

source " drivers/block/Kconfig "
飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐