《嵌入式系统 – Zephyr开发笔记》 第3章 Zephyr 工程配置

原文链接

官方网站

开发环境

主机: Ubuntu v18.04
Zephyr:V2.3.99
SDK:0.11.4
Date:2020-08-22

Zephyr工程通过Kconfig进行配置管理,与linux工程配置相似,zephyr支持linux开发者熟悉的menuconfig,同时还也支持guiconfig。

3.1图形化配置界面

3.1.1初始化应用

启动图形配置界面首先,需要初始化默认工程,生成默认的配置文件.config。先随便选择一个应用。
 使用west:
#west build -p -b nucleo_f746zg samples/basic/blinky

在这里插入图片描述

 使用CMake 和ninja:
#mkdir build && cd build
#cmake -GNinja -DBOARD=<board> …
#ninja

3.1.2 menuconfig启动

启动menuconfig,执行如下命令,出现menuconfig界面。熟悉Linux开发的朋友一定对这个界面非常熟悉。

A.启动terminal-based menuconfig使用以下方式:
 使用west:
#west build -t menuconfig
 ninja:
#ninja menuconfig

在这里插入图片描述

执行上面的命令后,生成~/zephyrproject/zephyr/build/zephyr/.config

在这里插入图片描述

B.使用guiconfig,输入以下命令:
 使用west:
#west build -t guiconfig
 ninja:
#ninja guiconfig

【注意】
1.如果在尝试运行guiconfig时出现tkinter的导入错误,则说明缺少必需的软件包。 请参阅安装Linux主机依赖项。需要的软件包通常称为python3-tk / python3-tkinter之类的软件包。
2.尽管tkinter是标准库的一部分,但默认情况下在许多Python安装中都不包含tkinter。
下图是guiconfig的界面。

在这里插入图片描述

如果你更喜欢在guiconfig界面中工作,那么最好检查在单菜单模式下对Kconfig文件所做的任何更改,该更改可通过顶部的复选框进行切换。与full-tree模式不同,单菜单模式将区分由config定义的符号和由menuconfig定义的符号,从而向你显示menuconfig界面中的外观。

3.1.2 修改configuration

更改菜单配置界面中的配置值,如下所示:

  • 使用箭头键浏览菜单。也支持常用的Vim键绑定。
  • 使用空格键和Enter键进入菜单并切换值。菜单旁边显示—>。按ESC返回到父菜单。

布尔型配置选项用[]括号显示,而数字和字符串值配置符号用()括号显示。不能更改的符号值显示为–或-*-。

你还可以按Y或N将布尔配置符号设置为相应的值。

  • 按 ?显示有关当前所选符号的信息,包括其帮助文本。按ESC或Q从信息显示返回菜单。
    在guiconfig界面中,单击该符号旁边的图像以更改其值,或双击带有该符号的行(这仅在该符号没有子代的情况下才有效,因为双击具有子代打开/而是关闭其菜单)。
    guiconfig还支持键盘菜单,类似于menuconfig。

  • 在menuconfig界面中按Q将打开“保存并退出”对话框(如果有要保存的更改):

在这里插入图片描述

按Y将内核配置选项保存为默认文件名(zephyr / .config)。 除非你使用不同的配置,否则通常将保存为默认文件名。

如果已修改,guiconfig界面还将在退出时提示您保存配置。

【注意】
1.构建期间使用的配置文件始终是zephyr / .config。 如果要使用其他已保存的配置,请将其复制到zephyr / .config。 确保备份原始配置文件。

2.另请注意,文件名以开头。 在Linux和macOS上,默认情况下ls不会列出它们。 使用-a标志查看它们。

在菜单树中找到一个符号并导航到它可能很乏味。 要直接跳至符号,请按/键(在guiconfig中也可以使用)。 这将弹出以下对话框,您可以在其中按名称搜索符号并跳至它们。 在guiconfig中,您也可以直接在对话框中更改符号值。

在这里插入图片描述

如果你跳到当前不可见的符号(例如,由于依赖关系不满意),则将启用“全部显示”模式。 在全部显示模式下,将显示所有符号,包括当前不可见的符号。 要关闭全部显示模式,请在menuconfig中按A或在guiconfig中按Ctrl-A。

【注1】如果当前菜单中没有可见的项目,则无法关闭“全部显示”模式。
要弄清楚为什么跳转到的符号不可见,请按一下来检查其依赖性。 在menuconfig或guiconfig底部的信息窗格中。 如果发现该符号依赖于另一个未启用的符号,则可以依次跳至该符号以查看是否可以启用它。
【注2】在menuconfig中,您可以按Ctrl-F在跳出对话框中查看当前所选项目的帮助,而无需退出该对话框。

有关menuconfig和guiconfig的更多信息,请参见menuconfig.py和guiconfig.py顶部的Python文档字符串。

3.2设置Kconfig配置值

menuconfig和guiconfig接口可用于在应用程序开发期间配置测试。 本页说明如何使设置永久化。
在Kconfig符号参考中可以找到所有Kconfig选项的自动生成的列表。
【注意】在更改Kconfig文件之前,最好先浏览一下Kconfig-提示和最佳做法页面。

3.2.1 Kconfig配置项

进行Kconfig更改时,重要的是要了解配置项和不可见配置项之间的区别。

  • 可见符号是用提示定义的符号。可见符号显示在交互式配置界面中(因此可见),可以在配置文件中进行设置。

这是可见配置的示例:

config FPU
   bool "Support floating point operations"
   depends on HAS_FPU

该配置项在menuconfig中显示如下,可以在其中进行切换:
[ ] Support floating point operations

  • 不可见的配置项是没有提示的符号。交互式配置界面中未显示不可见的配置项,用户无法直接控制其值。相反,它们从默认值或其他配置项中获取值。

这是一个示例或不可见的配置项:

config CPU_HAS_FPU
   bool
   help
     This symbol is y if the CPU has a hardware floating point unit.

在这种情况下,通过具有选择CPU_HAS_FPU的其他符号来启用CPU_HAS_FPU。

3.2.2通过配置文件中设置配置项

可见配置项可以通过在配置文件中进行设置来配置。初始配置是通过将板子的* _defconfig文件与应用程序设置(通常来自prj.conf)合并而产生的。有关更多详细信息,请参见下面的初始配置。
配置文件中的分配使用以下语法:

CONFIG_<symbol name>=<value>

【注】等号两边不能有空格。
可以通过将bool符号分别设置为y或n来启用或禁用它们。上面的示例中的FPU符号可以这样启用:
CONFIG_FPU=y

【注意】
1.布尔符号也可以设置为n,其注释格式如下:
#CONFIG_SOME_OTHER_BOOL is not set
2.这个在zephyr / .config中的合并配置中看到的格式。
3.出于历史原因,可以接受这种样式:Kconfig配置文件可以解析为makefile(尽管Zephyr不使用此文件)。使n值符号对应于未设置的变量可简化Make中的测试。

其他符号类型的分配如下:
CONFIG_SOME_STRING=“cool value”
CONFIG_SOME_INT=123

注释使用#:
#This is a comment
仅在满足配置项之间依赖性的情况下,才遵守配置文件中的分配。否则将打印警告。要弄清楚配置项的依赖性是什么,请使用交互式配置界面之一(可以使用/直接跳转到符号),或在Kconfig符号参考中查找符号。

3.2.3初始配置

应用程序的初始配置有三个配置来源合并:

1.A BOARD-specific configuration file stored in boards/// defconfig
2.Any CMake cache entries prefix with CONFIG

3.The application configuration




欢迎访问我的网站

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书
BruceOu的知乎


欢迎订阅我的微信公众号

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruceoxl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值