Zephyr 与 SoftDevice 的比较

use*_*305 3 bluetooth bluetooth-lowenergy

我正在寻找针对 BLE 应用的 Zephyr 与 SoftDevice 的比较。互联网上有很多关于它的讨论,但没有具体的内容。有人在同一个应用程序的同一个 SOC 上使用过这两个堆栈吗?可以谈谈它们之间的差异吗?

You*_*eed 8

我不确定您是否指的是 Zephyr 和 nRF Connect SDK(即网络核心)之间的差异,或者您的意思是 Zephyr 与 Nordic SDK(即在 Zephyr RTOS 中编写应用程序与普通 C 应用程序),但我会尝试涵盖所有场景。我使用北欧设备已有十多年了,这是我对差异的看法:-

带 SoftDevice 的 Nordic SDK

这是 Nordic Semiconductor 的专有软件开发套件 (SDK),其中包括 SoftDevice(实现蓝牙低功耗堆栈的预编译二进制文件)和一组用于对 nRF 设备进行编程的库。带 SoftDevice 的 Nordic SDK 提供了一个高级、易于使用的 API,用于在各种 Nordic 设备(包括 nRF51 和 nRF52)上进行蓝牙开发。它还包括其他功能,例如电源管理、安全性和设备管理。SDK + SoftDevice 是 Nordic 在开始 BLE 开发时首次随其芯片发布的产品。您可以在Nordic 提供的这份非常全面的指南中找到有关 Nordic SDK 和 softdevice 的更多信息。

纯 Zephyr RTOS

Zephyr 是一款开源 RTOS,支持多种硬件平台(包括 Nordic 的 nRF 设备)。它基于专为嵌入式系统设计的小内核。Zephyr 操作系统的优点在于它是开源的,并且还包括所有现代 RTOS 功能,例如多线程、中断服务、内存分配等。此外,它还拥有许多适用于许多嵌入式芯片和外部硬件的库和应用程序(可以在此处找到支持的硬件的完整列表)。您可以在此处的 Zephyr 文档中找到更多信息。

一些 Nordic 设备(例如 nRF51 和 nRF52)现在允许您在 Zephyr RTOS 中或使用前面提到的 SDK+softdevice 编写应用程序。然而,SDK+softdevice 上的积极开发已经停止,Nordic 已完全迁移到使用 Zephyr RTOS + nRF Connect SDK(下面的最终选项)。

将 Zephyr 与 nRF 设备结合使用时,您有以下两个选项之一:1) Softdevice 控制器和 2) Zephyr BLE 控制器。选项(1)将在下面的部分中描述。选项 (2) 是一个完全开源的 BLE 控制器,包括上部和下部实现,从而可以支持多个硬件平台。换句话说,使用此选项的主要优点之一是您可以从 Nordic 设备切换到另一个 BLE 设备,而只需对应用程序进行最少的更改。您可以在这里找到更多相关信息。

基于 Zephyr 并使用 Nordic 的 SoftDevice 的 nRF Connect SDK

最后,nRF Connect SDK 是一个基于开源 Zephyr RTOS(如上所述)的软件开发套件,但添加了 Nordic 的一些内容。这些新增内容包括更多文档、库(例如固件无线升级 - FOTA 和 CryptoCell 库)以及来自 Nordic 的更多支持。该SDK还包括Nordic自己的软设备,该软设备经过Nordic的试用和测试并合格​​。您可以在此处找到有关 Nordic nRF Connect SDK 的更多信息。

总而言之,如果我必须给出最终建议,我会说选择 nRF Connect SDK(特别是如果您确定将在产品的整个生命周期中使用 nRF) - 因为这样您最终将获得所有使用 Zephyr RTOS 的优势加上 Nordic 可靠的软件和库的优势。另一方面,如果您的目标是让您的应用程序完全开源,或者您认为将来可能会迁移到另一个硬件平台,那么“纯”Zephyr RTOS 是更好的选择。旧的 Nordic SDK + softdevice 不是考虑因素,因为它现在已经过时并且对它的支持实际上已经停止。

其他一些有用的链接:-