0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ZephyrOS中对于Kconfig的介绍

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2021-10-11 10:17 次阅读

这次小编为大家带来的是ZephyrOS系列文章的第五篇,将为大家介绍Kconfig。

这次小编紧接着上篇给大家带来ZephyrOS中对于Kconfig的介绍。

简单的来说,Kconfig就是Zephyr的配置系统,Zephyr内核可以在构建阶段,根据不同的配置,包含特定的应用和平台。而这个配置过程正是通过Kconfig实现的,其也与Linux内核配置所使用的Kconfig完全一致。设计目标就是让我们无需修改源代码就可以完成Zephyr的配置工作,包括内核,硬件,子系统等。通常配置项(也被称作symbol)是在Kconfig文件中定义的。当然不同的配置项之间也是可以存在依赖关系的,比如定义一个符号A,它依赖于B,那么只有当B被使能之后,A才是有效的。同时,所有的符号可以被合并到一个叫做menu/sub-menu的组里面,便于图形化管理。在正式开篇之前,小编先给大家推荐一个小工具,叫做menuconfig,他是一个可选的图形化工具,可以用来查看和修改Kconfig设置:

当然默认是不会打开的,即默认使用west构建工程是不支持menuconfig的,需要传入-t menuconfig参数

west build –t menuconfig –b mimxrt1060_evksampleshello_world

最终,所有配置项会被生成到一个叫做autoconf.h的文件中,没有用到的代码就不会再被编译系统所编译,以节省代码空间。

下面,介绍Kconfig中的一个比较重要的概念,visible和invisible符号。

首先说visible符号,也就是那些可以在menuconfig窗口中见到的,这些符号,通常都有一个prompt属性,即一个字符串来进行描述,例如:

config FPU bool “Support floating point operations” depends on HAS_FPU

然后,我们就可以在menuconfig界面中找到他:

[ ] Support floating pointoperations

Invisible符号则与之相对,一般没有prompt属性,即字符串来说明,例如:

config CPU_HAS_FPU

bool

help

This symbol is y if the CPU has a hardwarefloating point unit.

他的特殊性在于,这些符号对于用户是不可见的,即不能通过menuconfig提供的图形化工具来配置,只能通过其他手段来修改其的值。

例如,通过Kconfig.defconfig文件设置下面这个符号的值为32:

config FOO_WIDTH

int

我们就可以在Kconfig.defconfig文件中定义:

config FOO_WIDTH

default 32

endif

这样一来,我们就修改了FOO_WIDTH的默认值为32。

要注意的是,Kconfig.defconfig中所定义的默认值会覆盖掉起始值,且优先级比较高。

我们再举一个choice的例子,比起上面我们定义的config形式的变量,choice类似于一种单选框,当有多个配置存在时,只能一个配置项有效,这样一来,达到一个互斥的效果。要如何操作呢?假定有一个choice叫做FOO,他有两个配置项A和B,初始默认值是B:

choice FOO

bool “Foo choice”

default B

config A

bool “A”

config B

bool “B”

endchoice

下面我们把他的默认值修改为A,完成这个操作,除了在Kconfig.defconfig中修改外,我们还可以在prj.conf中添加:

choice FOO

default A

endchoice

当然,这里要注意,如果我们定义了一个invisible的choice变量FOO的话,就只能通过Kconfig.defconfig来修改了。

那么在Zephyr工程中,都有哪些修改默认配置的地方呢?如果只考虑板级(即Zephyr所支持的开发板)+ 应用这一层,大致分为三类:

板子相关的配置文件,一般名为:boards/《ARCH》/《BOARD》/《BOARD》_defconfig

任意的CMake cache文件,以CONFIG_开头

应用配置:

a) 默认prj.conf

b) 通过-DCONF_FILE=《conf_file》指定,进行重载

c) 通过-DOVERLAY_CONFIG=《conf_file》指定,进行扩展

d) 通过prj_《BOARD》.conf进行重载

e) 通过boards/《BOARD》.conf进行扩展

那么小编就不再扩展Kconfig的其他语法了,大家可以参考这里来了解更多。

至此,Zephyr所使用的两大配置系统就大致讲完了,那么有朋友可能会问了,我们什么时候要用DeviceTree什么时候要用Kconfig呢?小编在这里简单总结一下:

使用设备树来描述硬件和启动配置,例如板载外设和设置启动时系统时钟频率等

使用Kconfig来配置哪些源代码将要被放到最终的镜像中,例如是否添加网络的支持,哪个驱动是需要的。

通俗点讲,DeviceTree负责管理那些硬件资源,Kconfig负责管理软件资源。

举个例子,有个设备同时拥有2.4GHz,multi-protocol radio; 蓝牙和802.15.4,那么设备树就用来描述:

是否有radio硬件存在

兼容性驱动

启动阶段配置,比如TX power in dBm

Kconfig文件决定哪个软件包需要被构建,是选择BLE还是选择802.15.4协议栈。

聊到这里,结合上一篇关于DeviceTree的文章,小编就将DeviceTree和Kconfig的一

些知识点分享给大家了,不过,限于篇幅,都只是一些比较简单的介绍,大家可以自行深入探索。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17128

    浏览量

    351003
  • Zephyr
    +关注

    关注

    0

    文章

    21

    浏览量

    5963

原文标题:清风徐来——Zephyr实战篇(4)之Kconfig

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电子成像的耦合介绍

    本文介绍了直接耦合、间接耦合、反射耦合和光学耦合这几种电子成像的耦合方式,并介绍了它们各自的适用场景以及优缺点。 在电子成像的闪烁体耦合学习过程,我们经常看到“耦合”、“闪烁体”、
    的头像 发表于 12-17 14:25 60次阅读

    CIM系统的定义、组成和对于FAB厂的重要性

      本文介绍了CIM(Computer Integrated Manufacturing)系统的定义、组成和对于FAB厂的重要性。 CIM(Computer Integrated
    的头像 发表于 12-16 16:30 172次阅读

    电流传感器在电机应用介绍

    电流传感器在电机应用介绍
    的头像 发表于 10-31 17:17 306次阅读
    电流传感器在电机应用<b class='flag-5'>中</b>的<b class='flag-5'>介绍</b>

    对于TLV320AIC23B datasheetMicrophone Input输入的问题求解答

    对于TLV320AIC23B datasheetMicrophone Input输入的问题: 对于给出的图,如果AVDD=3.3v,那么VMID=1.65v,VADC=1.65v。 但是根据
    发表于 10-25 16:26

    对于多级放大电路板,在PCB布局,电源摆放的位置应该注意什么?

    对于多级放大电路板,在PCB布局,电源摆放的位置应该注意什么,我在一些资料上看到过:多级放大电路,布线时考虑信号流向,防止级间干扰,且电源靠近后级,防止各级形成共阻。但我还是不太理解,所以想请教TI的老师给我解答?就是除此
    发表于 09-20 08:25

    有源滤波器对于运放带宽有什么要求?

    请问下有源滤波器对于运放带宽有什么要求,谢谢。
    发表于 09-20 06:38

    windows使用env软件没办法使用menuconfig指令怎么处理?

    \\stm32f407-atk-explorer $ menuconfig Kconfig:3:warning: ignoring unsupported character \':\' Kconfig:4
    发表于 07-09 06:16

    ESP8266 ESP-AT环境搭好之后,打不开menuconfig怎么解决?

    /module_esp8266_1mb/sdkconfig.defaults... /home/esp/esp-at/main/interface/hspi/Kconfig:10: syntax
    发表于 06-27 06:57

    按照ESP32-IDF的编程指南操作,运行idf.py menuconfig后,运行报错怎么解决?

    /esp-idf/components/bt/Kconfig:386: undefined variable \"$IDF_PATH/components/bt/host/bluedroid
    发表于 06-25 06:32

    在MSYS32上面搭建IDF2.1版本,在hello_world文件夹输入命令make menuconfig报错了,为什么?

    想要在MSYS32上面搭建IDF2.1版本,在hello_world文件夹输入命令make menuconfig,发现报错了,我应该在哪里下载wordexp这个文件? 6.# make
    发表于 06-21 15:56

    编译lv_port_esp32工程出现unknown statement \"rsource\"是哪里的问题?

    /lv_port_esp32/components/lvgl_esp32_drivers/Kconfig:2: syntax error /home/share/esp32/esp_light/esp-idf/Kconfig
    发表于 06-20 08:20

    电路的串联与并联介绍

    串联和并联是两种基本的连接方式,它们决定了电路组件之间的电流和电压分布。了解串联与并联的概念对于理解电路的工作原理和进行电路设计至关重要。 串联(Series) 在串联的连接方式,电路的总电阻
    的头像 发表于 05-02 16:28 3937次阅读

    在e² studio安装QE的流程介绍

    在e² studio安装QE的流程介绍
    的头像 发表于 04-04 08:05 528次阅读
    在e² studio<b class='flag-5'>中</b>安装QE的流程<b class='flag-5'>介绍</b>

    AT89S51文资料介绍

    电子发烧友网站提供《AT89S51文资料介绍.pdf》资料免费下载
    发表于 02-20 09:24 13次下载

    SPICE的热模型介绍

    SPICE模型的热模型是指用于模拟和预测电子元件在工作时的热行为特性的模型。这些模型通常与电路仿真软件一起使用,以便在设计阶段评估和优化电子系统的热性能。热模型对于确保电子元件不会因过热而损坏或
    的头像 发表于 02-06 11:28 1082次阅读
    SPICE<b class='flag-5'>中</b>的热模型<b class='flag-5'>介绍</b>