好记性不如铅笔头

linux, 操作系统

Kconfiglib简单学习使用

话不多说,我们一般使用menuconfig+Kconfig的方式进行版本配置,这里简单的笔记一个Python解析器版本的实现  Kconfiglib。

CONTENTS

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

发表评论

8 − 3 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据