NCS-OS 系列2:NCS-SDK kconfig语法简介

NCS-OS 系列2:NCS-SDK kconfig语法简介
概述

ncs 相关文章,部分为原始文档翻译,水平有限,如果有错误,欢迎指出。

概念

Kconfig的作用是用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config。在编译以后,配置信息会在autoconf.h中生成。

常用关键字

1、config
config表示一个配置项的开始,紧跟着的options为配置项名字,需要注意的是,在kconfig文件中省略了前缀 CONFIG_

config SAMPLE
	bool "help information"
        depends on SAMPLE_ENABLE
        select  SAMPLE_SELECT
	default y

我们以上面代码为入口,介绍一些常见的参数及使用方式
上面代码创建了一个叫做SAMPLE的配置项,类型为bool,默认值为y,在编译以后的代码中,最终会在autoconf.h中创建一个CONFIG_SAMPLE=y的宏

这里简单介绍下常用的值类型,方便进行理解

  • bool 布尔类型,表示该CONFIG宏只能选择y或者n
  • trisate 表示该CONFIG可以被设置为y,n或者m(编译为模块)
  • string 字符串类型,表示该CONFIG宏可以被设置为字符串
  • hex 十六机制,表示该宏可以被设置为十六进制数
  • int 整型表示该宏可以被设置为一个整数

常见参数类型(以上文代码为示例):

  • default y 表示该宏默认值为y,注意默认值的类型要与定义的值类型匹配,上面值类型为bool所以默认值可以为y或者n
  • help 帮助提示信息"help information"就是帮助信息
  • depends on 依赖项,表示该宏依赖于另一个宏,只有在另一个宏打开的前提下,才能配置这个宏,上述代码表示,只有在SAMPLE_ENABLE宏设置为y的时候,SAMPLE宏才被设置为y
  • select 反依赖项,与depends on刚好相反,表示当前宏设置为y以后,则会自动设置另一个宏为y,上面代码表示,在SAMPLE设置为y的时候,SAMPLE_SELECT也会自动被设置为y
  • range 设置用户输入的数据范围,如 range 0 100表示用户数据只能为0~100之间。

2、choice
choice定义了一组选择项,可以简单理解为一个多选一的选项,需要注意,choice中的参数类型只能是bool或者trisate
示例如下:

choice
	prompt "GPS device"
	default GPS_USE_SIM
	help
	  Select from which device GPS data will be fetched.

config GPS_USE_SIM
	bool "Use GPS simulator"
	help
	  Use simulated GPS data.

config GPS_USE_EXTERNAL
	bool "User provided GPS device"
	help
	  Provide a GPS device that location data will be fetched from and
	  sent to nRF CloudSAMPLE


endchoice

上面表示在GPS_USE_SIMGPS_USE_EXTERNA中选择GPS_USE_SIM为y,也就是最终生成CONFIG_GPS_USE_SIM=y的宏。

3、menu
menu用于定义一个菜单,

menu "menu sample"   
depends MENU_SAMPLE
config MENU_CONFIG
...
endmenu

所有的在"menu" … “endmenu” 之间都是"menu sample"的子菜单。所有的子菜单选项都继承了父菜单的依赖关系,比如,"MENU_SAMPLE"的依赖关系就被加到了配置选项MENU_CONFIG的依赖列表中。

4、if

if ACCEL_USE_SIM
config ACCEL_DEV_NAME
	string
	default SENSOR_SIM_DEV_NAME
config ACCEL_TRIGGER
	bool
	default SENSOR_SIM_TRIGGER
endif

if与C中功能基本一致,用于条件判断,只有在ACCEL_USE_SIM为y的时候,if和endif中的选项才会被配置。

5、source
source用于读取另一个Kconfig文件
如:

source "drivers/serial/Kconfig.ns16550"

source "drivers/serial/Kconfig.mcux"

source "drivers/serial/Kconfig.mcux_flexcomm"

source "drivers/serial/Kconfig.mcux_lpsci"

上述代码,就是添加四个kconfig文件到当前项目中。

总结

本章节简单介绍了kconfig的基本语法,如果有深入需求,可以针对性的搜索相关用法。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值