鸿蒙轻内核Kconfig用法笔记

开发 后端
Kconfig是配置项的描述文件,支持设置配置项及其默认值,依赖关系等等,比如kernel\liteos_a\Kconfig,该文件还会继续依赖各个模块的Kconfig文件。

[[441649]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

鸿蒙轻内核使用Kconfig进行图形化配置,本文专门讲解下鸿蒙轻内核LiteOS-M和LiteOS-A的图形化配置方法。本文中所涉及的源码,均可以在开源站点https://gitee.com/openharmony/kernel_liteos_a、https://gitee.com/openharmony/kernel_liteos_m 获取。本文首先简单介绍下kconfig的基础知识,接着介绍下如何使用图形化配置。

1、Kconfig简介

Kconfig语言定义了一套完整的规则来表述配置项及配置项间的关系,详细内容可以参考Linux官方文档Kconfig Language,此处不赘述。鸿蒙轻内核使用的是Python的开源三方库kconfiglib(menuconfig只是其提供的命令之一,相关命令还有genconfig, savedefconfig等等),官方主页为https://pypi.org/project/kconfiglib。

1.1 Kconfig和.config文件

Kconfig是配置项的描述文件,支持设置配置项及其默认值,依赖关系等等,比如kernel\liteos_a\Kconfig,该文件还会继续依赖各个模块的Kconfig文件。

产品配置文件,如vendor\hisilicon\hispark_taurus\kernel_configs\debug.config,提供配置项及在产品中这些配置项的设置值,可能和内核配置项的默认取值不一致,属于产品对内核配置项的定制。这些配置文件在BUILD.gn或makefile文件中使用。

另外还会生成一个C语言头文件,提供配置项的宏定义版,在C语言程序中使用。

1.2 操作简介

下载OpenHarmony源代码后,使用hb set设置产品解决方案后,然后在kernel/liteos_m或liteos_a目录下执行make help可获得一个总体的帮助说明,如下图所示:

鸿蒙轻内核Kconfig用法笔记-鸿蒙HarmonyOS技术社区

其中与Kconfig有关的为xxconfig类目标,这类目标通过args接收额外的参数,比如:

  1. make menuconfig args="--help" 

 通过args="–help"就可以了解xxconfig类命令的使用详细说明。

支持的参数有文件类型FSTYPE,版本类别TEE、RELEASE等版本,默认为DEBUG版本。还支持通过CONFIG参数指定产品配置文件路径,该参数优先级较高。

注意:

OpenHarmony支持使用ninja+gn来编译构建,内核使用的kconfig配置工具依旧使用makefile进行维护的。

2、配置内核

liteos_a内核使用Kconfig方式进行配置,在内核目录kernel/liteos_a下执行make menuconfig等命令即可。liteos_m内核类似,以liteos_a为例进行讲解。

需要注意:

在操作前,需要使用hb set设置产品,否则会提示:The selected product (None) is not a liteos_a kernel type product. Stop。

2.1 支持的参数

上文,我们知道了make menuconfig支持参数,我们详细看下代码。文件位置在kernel/liteos_a/Makefile,代码片段如下:

如果指定了CONFIG参数,则使用用户指定的产品配置文件。如果开启了TEE,则使用TEE版本的产品配置文件。如果开启了RELEASE,则使用release版本产品配置文件,否则使用debug版本的产品配置文件。

  1. ifeq ($(TEE:1=y),y) 
  2. tee = _tee 
  3. endif 
  4. ifeq ($(RELEASE:1=y),y) 
  5. CONFIG ?= $(PRODUCT_PATH)/kernel_configs/release$(tee).config 
  6. else 
  7. CONFIG ?= $(PRODUCT_PATH)/kernel_configs/debug$(tee).config 
  8. endif 
  9.  
  10. KCONFIG_CONFIG ?= $(CONFIG) 

2.2 menuconfig内核配置

使用make menuconfig进行内核配置,Makefile源码片段如下:

  1. update_config menuconfig: 
  2.     $(HIDE)test -f "$(CONFIG)" && cp -v "$(CONFIG)" .config && menuconfig $(args) && savedefconfig --out "$(CONFIG)" 

 可以看出,update_config和menuconfig这2个target效果相同,一般使用make menuconfig即可。执行的操作包含如下3个:

  • 判断产品配置文件是否存在,如果存在则把配置文件复制到内核根目录并命名为.config
  • 展示menuconfig用户配置界面,供开发者进行内核配置
  • 保存最小配置到产品产品文件,可以使用make savedefconfig args="–help"查看命令的解释。

设置产品后,要修改产品的.config配置,目前可以在内核目录下执行make menuconfig,没有make参数的情况下该命令默认会自动找到你hb set时所选择的产品的debug.config配置进行menuconfig配置,如果想要修改产品的release.config配置则可以使用参数RELEASE=1。前提是产品有预置release.config配置。同样的,可以使用参数TEE=1来修改产品的tee版本的.config配置。命令如下:

  1. make update_config RELEASE=1 
  2. make update_config TEE=1 

 另外,如果想手动指定产品配置,而不是自动使用hb set时所选择的产品的配置,则可以使用CONFIG=/path/to/the/xx.config参数,如:

  1. make update_config CONFIG=../../vendor/hisilicon/hispark_aries/config/release.config 

3、Kconfig高级语法

Kconfig大部分工程师都了解,快速介绍几个鸿蒙轻内核中使用到的稍微高级的语法。

  • osource

我们知道kconfig使用source来引用其他kconfig文件,而osource等于optional source,表示可选的,如果osource指定的kconfig文件不存在,也不报错。类似,makefile中的include和-include的差异。

  • rsource

rsource等于 relative source,后面引用的kconfig文件支持相对路径。路径相对于包含rsource语句的kconfig而言。

  • orsource

等于osource+rsource。

kconf的几个命令如下“

  • –oldconfig

基于提供的.config文件,根据Kconfig文件修改配置文件

  • –silentoldconfig

等同于oldconfig,静默模式,并修改deps依赖即生成头文件。

  • –olddefconfig

等同于silentoldconfig,对于新符号使用默认值

  • –savedefconfig

把当前最小的配置保持到文件

小结

本文介绍了Kconfig的基础知识,和鸿蒙轻内核的图形化配置。感谢阅读,有什么问题,请留言。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-12-27 16:24:11

鸿蒙HarmonyOS应用

2019-08-15 16:00:21

Linux内核Kconfig

2012-05-03 08:34:15

LinuxKconfig

2022-03-11 20:23:14

鸿蒙源码分析进程管理

2022-03-03 18:28:28

Harmony进程任务管理模块

2022-04-13 11:02:12

鸿蒙事件模块事件Event

2022-03-31 16:26:49

鸿蒙源码分析进程管理

2020-10-09 09:21:45

鸿蒙

2022-01-12 10:50:23

鸿蒙HarmonyOS应用

2022-01-10 15:31:44

鸿蒙HarmonyOS应用

2021-06-04 09:57:49

鸿蒙HarmonyOS应用

2021-11-05 15:00:33

鸿蒙HarmonyOS应用

2021-05-08 15:14:50

鸿蒙HarmonyOS应用

2021-05-17 09:28:59

鸿蒙HarmonyOS应用

2021-11-08 15:06:15

鸿蒙HarmonyOS应用

2021-06-04 14:15:10

鸿蒙HarmonyOS应用

2021-05-25 09:28:34

鸿蒙HarmonyOS应用

2021-10-20 16:08:57

鸿蒙HarmonyOS应用

2022-04-13 11:12:43

鸿蒙轻内核信号量模块操作系统

2021-05-31 20:30:55

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号