Nordic nRF Connect SDK 结构和内容

128 阅读3分钟

nRF Connect SDK 是一款可扩展的统一软件开发套件,用于基于 Nordic Semiconductor nRF52、nRF53、nRF70 和 nRF91 系列无线设备构建低功耗无线应用。它提供了一个可扩展的框架,用于为内存受限的设备构建尺寸优化的软件,以及为更先进的设备和应用构建功能强大且复杂的软件。

它集成了 Zephyr 实时操作系统 (RTOS) 和各种完整的应用程序、示例和协议栈,例如低功耗蓝牙、蓝牙网状网络、Wi-Fi、Matter、Thread/Zigbee 和 LTE-M/NB-IoT/GPS、TCP/IP。它还包括中间件,例如 CoAP、MQTT、LwM2M、各种库、硬件驱动程序、用于安全的 Trusted Firmware-M 和安全引导加载程序 (MCUBoot)。

image.png Zephyr RTOS 和第三方组件(例如:MCUBoot、Trusted Firmware-M)在上图中以深蓝色显示。

Zephyr RTOS 是一款开源实时操作系统,适用于联网且资源受限的嵌入式设备。它包含一个调度程序,可确保可预测/确定的执行模式并抽象出时间要求。它还附带了一套丰富的基础库和中间件,可简化开发并帮助缩短产品上市时间。Zephyr RTOS 具有高度可配置性,支持从内存受限设备的极小配置(最低 8 千字节,例如简单的 LED 闪烁应用程序)到功能强大、功能丰富、处理能力强的设备(多 MB 内存)的大内存配置。

nRF Connect SDK 为所有 Nordic 设备和软件组件提供单一代码库。它简化了将模块、库和驱动程序从一个应用程序移植到另一个应用程序的过程,从而缩短了开发时间。通过让开发人员为其应用程序挑选必要的软件组件,可以保证高内存效率。nRF Connect SDK 在 GitHub 上公开托管。

在内部,nRF Connect SDK 代码分为四个主要存储库:

  • nrf – 应用程序、示例、连接协议(北欧)
  • nrfxlib – 通用库和堆栈(Nordic)
  • Zephyr – RTOS 和主板配置(开源)
  • MCUBoot – 安全引导加载程序(开源)

除了四个主要存储库之外,还有其他存储库,如 TrustedFirmware-M 存储库和 Matter 存储库。

下图直观地展示了 nRF Connect SDK 中的工具链,该工具链基于 Zephyr 工具链。您可以看到一组不同的工具,每个工具都在应用程序的创建过程中发挥作用,从配置系统到构建系统。

image.png Kconfig(第 3 课中介绍)生成配置整个系统的定义,例如,在应用程序中要包含哪种无线协议或哪些库。Devicetree(第 2 课中介绍)描述硬件。然后,CMake 使用来自 Kconfig 和设备树的信息来生成构建文件,Ninja(类似于make)将使用该文件来构建程序。GCC 编译器系统用于创建可执行文件。

通过 Kconfig ( )将源代码 ( *.c) 与配置系统高度分离*.conf,通过 devicetree ( ) 将硬件描述系统高度分离*.dts,这样只需进行很少的更改,就可以在不同硬件和不同配置上使用相同的应用程序源代码。这对可移植性和可维护性的易用性有很大影响。

image.png