第 3 课 - nRF Connect SDK 应用程序的元素 - 配置文件
根据开发者学院的描述,本节课程主要是了解NCS应用程序的结构,了解它们彼此之间的关系以及他们之间如何相互作用。
其中一些概念性的内容需要看官方的描述,我这里只对主要内容做一些总结。
最小应用程序文件结构
app/
|-- CMakeLists.txt
|-- Kconfig
|-- prj.conf
|-- <board_name>.overlay
|-- src/
|-- main.c
目标:
- 了解如何使用 Kconfig 配置文件来启用和配置 nRF Connect SDK 中可用的不同软件模块
- 检查应用程序配置文件和电路板配置文件,并理解它们之间的关系
- 了解如何使用 nRF Kconfig GUI 探索特定软件模块的可用配置选项
- 了解多映像构建,以及如何将子映像添加到您的应用程序中
- 通过动手练习练习如何从头开始创建应用程序,以及如何使用 Kconfig 添加模块和修改设备树
配置文件
这里提到了几个配置文件Kconfig,电路板配置,应用程序配置。
| 配置类型 | 用途 | 配置文件位置 | 作用范围 | 示例 |
|---|---|---|---|---|
| Kconfig | 定义系统级配置选项(如驱动、协议栈、功能模块的启用/禁用) | Kconfig 文件(位于Zephyr源码各模块目录) | 全局(所有支持的硬件) | CONFIG_BT=y(启用蓝牙模块) |
| 电路板配置 | 针对具体硬件板卡的配置(如GPIO分配、时钟频率、外设支持等) | boards/<架构>/<板卡名>/<板卡名>_defconfig | 特定板卡 | CONFIG_GPIO=y(启用板卡的GPIO) |
| 应用程序配置 | 应用特有的配置(如线程优先级、堆栈大小、应用依赖的模块等) | prj.conf(应用程序根目录) | 特定应用 | CONFIG_MY_APP_THREAD_PRIORITY=5 |
- 优先级:
- 应用程序配置(如prj.conf) > 电路板配置(defconfig) > Kconfig默认配置。
- 应用配置会覆盖其他层级的同名配置。
- 继承关系:
- 电路板配置继承Zephyr的默认Kconfig选项,并覆盖它们以适应具体硬件。
- 应用程序配置继承电路板配置,并覆盖它们以满足应用需求。
- 作用范围:
- Kconfig定义所有可能的选项,电路板和应用配置仅覆盖必要选项。
配置项的常见格式:
CONFIG_<symbol_name>=<value>
可以看到有一个固定的前缀CONFIG_。
在使用nRF Kconfig GUI 修改配置时有三种保存方式:

“Apply”:将更改保存在临时配置文件(位于 build->Zephyr 中的 .config 文件)中,一旦您构建了应用程序的原始版本,这些更改就会被还原。
“Save to file”: 选项将更改保存到 prj.conf 文件,从而保留不同构建中的更改。
“Save minimal”: 选项仅将我们刚刚所做的更改保存到一个单独的文件中。
一般来说推荐使用Save to file.
下面通过手动练习来熟悉文件结构
main.c
#include <zephyr/kernel.h>//zephyr 内核文件
#include <zephyr/sys/printk.h>//打印模块
int main(void)
{
while (1)
{
printk("Hello World!\n");
k_msleep(1000);
}
}
CMakeLists.txt
# SPDX-License-Identifier: Apache-2.0
#最低版本要求 避免版本过低构建失败
cmake_minimum_required(VERSION 3.20.0)
#拉取 Zephyr 构建系统
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
#项目名称
project(hello_world)
#加入源文件
target_sources(app PRIVATE src/main.c)

浙公网安备 33010602011771号