Kconfig自定义用户菜单(基于ESP-IDF)

Kconfig自定义用户菜单(基于ESP-IDF)本文介绍了 ESP IDF 中的 Kconfig 配置系统 如何通过 idf pymenuconfig 生成 sdkconfig h 涉及 Kconfig 的使用方法 数值选项示例以及 Kconfig 格式要求 重点讲解了在实际项目中的应用和注意事项

大家好,欢迎来到IT知识分享网。

1. idf.py menuconfig

根据官方说法:

在这里插入图片描述
简单说,我们调用idf.py menuconfig就是为了生成sdkconfig.h文件参与编译。

2. Kconfig介绍

3. Kconfig使用

3.1 Kconfig格式要求

这是官网对于Kconfig格式的要求

在这里插入图片描述

3.2 Kconfig语法

3.2.1 config 条目

语法:

config symbol options 

例如:

config ARM64_ACPI_PARKING_PROTOCOL bool "Enable support for the ARM64 ACPI parking protocol" depends on ACPI help Enable support for the ARM64 ACPI parking protocol. If disabled the kernel will not allow booting through the ARM64 ACPI parking protocol even if the corresponding data is present in the ACPI MADT table. 

其中options部分有:

  • bool: 布尔类型 该CONFIG宏只能选择y(编译内核)或者n(不编译),菜单项前为圆括号
  • tristate: 三态 该CONFIG宏可以设置y/m/n三种模式即内建、模块、移除,假如选择编译成内核模块,则会在.config中生成一个CONFIG_HELLO_MODULE=m的配置,假如选择内建,就是直接编译成内核影响,就会在.config中生成一个CONFIG_HELLO_MODULE=y的配置.
  • string: 字符串 该CONFIG宏可以设为一串字符,比如#define CONFIG_XXX “config test”
  • hex: 十六进制 该CONFIG宏可以设为一个十六进制,比如#define CONFIG_XXX 0x1234
  • int: 整型 该CONFIG宏可以设为一个整数,比如#define CONFIG_XXX 1234

2、依赖型定义depends on和select 指此菜单的出现是否依赖于另一个定义

  • depends on:依赖项,比如depends on XXX 表示当前宏需要CONFIG_XXX宏打开的前提下,才能设置它(注意依赖项的config参数只有bool或tristate才有效)
  • select : 反依赖项,和depends on刚好相反,比如 selecton XXX表示当前宏如果是y或者m,则会自动设置XXX=y或者m(注意参数只有bool或tristate才有效)

3.3.2 menu条目

menu条目用于生成菜单,其格式如下:

menu "字符串" .............. endmenu 

3.3.3 choice条目

会生成一个单选框,里面通过多选一方式选择config,需要注意choice中的config参数只能bool或tristate

choice条目将多个类似的配置选项组合在一起,供用户单选或多选

choices条目格式如下:

 "choice" <choiceoptions> <choiceblock> "endchoice" 

这个定义了一个选择集合,并且接受任何上面所说的属性作为选项。选择只能是bool类型或tristate类型,并且布尔选择只允许一个单一的配置项被选中,三态选择还允许任何配置项被设置为“M”。这可以用在下面的情况:如果一个硬件存在多个驱动程序,并且只有一个驱动程序​​可以编译/加载到内核中,但所有的驱动程序可以编译成模块。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128804.html

(0)
上一篇 2025-08-28 21:33
下一篇 2025-08-28 21:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信