话不多说,我们一般使用menuconfig+Kconfig的方式进行版本配置,这里简单的笔记一个Python解析器版本的实现 Kconfiglib。
CONTENTS [hide]
Kconfiglib
官方地址【 https://github.com/ulfalizer/Kconfiglib 】
安装方式:
pip(3) install kconfiglib
安装成功后,会在系统BIN中添加很多可执行命令(其实是python脚本)【参考链接】 ,我们一般常用的是 menuconfig guiconfig genconfig
menuconfig:用于显示经典的menuconfig页面,默认需要本地有Kconfig文件
guiconfig:显示GUI版本的config页面,默认需要本地有Kconfig文件
genconfig:默认将.config文件转换为config.h
Kconfig的语法介绍
【 https://www.rt-thread.org/document/site/programming-manual/kconfig/kconfig/ 】
【 https://www.cnblogs.com/huanhuaqingfeng/p/11235843.html 】
【 https://www.cnblogs.com/lotgu/p/5967979.html 】
【 https://docs.zephyrproject.org/latest/guides/kconfig/index.html 】
【 https://www.cnblogs.com/fah936861121/p/7229522.html 】
简单实例
Kconfig文件1,最简单demo:
mainmenu "Main MenuConfig Demo" |
comment "This is a comment demo" |
config BSP_USING_GPIO |
bool "Enable GPIO" |
default y |
help |
config gpio |
Kconfig文件2,有select依赖:
mainmenu "Main MenuConfig Demo" |
comment "This is a comment demo" |
config BSP_USING_PIN |
bool "Enable PIN" |
default n |
help |
config PIN |
config BSP_USING_GPIO |
bool "Enable GPIO" |
select BSP_USING_PIN |
default n |
help |
config gpio |
Kconfig文件3,几个常见的类型:
mainmenu "Main MenuConfig Demo" |
comment "This is a comment demo" |
config BSP_USING_PIN |
bool "Enable PIN" |
default n |
help |
config PIN |
config BSP_USING_GPIO |
bool "Enable GPIO" |
select BSP_USING_PIN |
default n |
help |
config gpio |
config BSP_DEVICE_NAME |
string "device name" |
default "hello world" |
help |
config device name |
config BSP_SCL_PIN |
int "pin number" |
range 1 176 |
default 128 |
help |
config pin number |
menu "Hardware Drivers Config" |
config BSP_USING_COM2 |
bool "Enable COM2 (uart2 pin)" |
default n |
config BSP_USING_COM3 |
bool "Enable COM3 (uart3 pin)" |
default n |
endmenu |
Kconfig文件4,隐藏依赖的几种写法:
mainmenu "Main MenuConfig Demo" |
comment "This is a comment demo" |
config BSP_USING_PIN |
bool "Enable PIN" |
default n |
if BSP_USING_PIN |
config BSP_SCL_PIN |
int "pin number" |
range 1 176 |
default 128 |
help |
config pin number |
endif |
============================= |
config BSP_USING_PIN |
bool "Enable PIN" |
default n |
config BSP_SCL_PIN |
depends on BSP_USING_PIN |
int "pin number" |
range 1 176 |
default 128 |
help |
config pin number |
Kconfig文件5,config为menu时的显示:
menuconfig BSP_USING_UART |
bool "Enable UART" |
default n |
if BSP_USING_UART |
config BSP_SCL_PIN |
int "pin number" |
range 1 176 |
default 128 |
help |
config pin number |
endif |
Kconfig文件5,choice的写法:
choice |
prompt "Select clock source" |
default BSP_RTC_USING_LSE |
config BSP_RTC_USING_LSE |
bool "RTC USING LSE" |
config BSP_RTC_USING_LSI |
bool "RTC USING LSI" |
endchoice |
发表评论