第 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
  1. 优先级:
  • 应用程序配置(如prj.conf) > 电路板配置(defconfig) > Kconfig默认配置。
  • 应用配置会覆盖其他层级的同名配置。
  1. 继承关系:
  • 电路板配置继承Zephyr的默认Kconfig选项,并覆盖它们以适应具体硬件。
  • 应用程序配置继承电路板配置,并覆盖它们以满足应用需求。
  1. 作用范围:
  • Kconfig定义所有可能的选项,电路板和应用配置仅覆盖必要选项。

配置项的常见格式:

CONFIG_<symbol_name>=<value>

可以看到有一个固定的前缀CONFIG_

在使用nRF Kconfig GUI 修改配置时有三种保存方式:

image
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)
posted @ 2025-03-12 17:18  NEIKOO  阅读(353)  评论(0)    收藏  举报