Zephyr和NuttX RTOS对ESP32的支持状态

原文链接:Status of Zephyr and NuttX RTOS support for ESP32 由Jean-Luc Aufranc撰写。
本文共计1273字,预计阅读3分钟

乐鑫最近宣布,ESP32 系列 WiSoC 获得了 Zephyr 和 NuttX 开源实时操作系统的官方支持。

其实这已经酝酿了很长时间,当我在 2018 年第一次在 ESP32 上尝试Zephyr OS的社区开发者端口时,它根本无法正常工作,我甚至无法在Wemos Lolin32板上运行 LED 闪烁示例代码,并且WiFi 示例代码无法构建成功。两年时间过去了,2020 年乐鑫系列开发板已经可以正式在 Zephyr 上工作了,现在 I/O、WiFi 和其他一些功能可以在 Zephyr 和 NuttX RTOS 上正常运行。

Zephyr 和NuttX 已支持ESP32
Zephyr 和NuttX 已支持ESP32

Zephyr对ESP32 的支持

我们在 2016 年首次写了关于Zephyr 项目的文章,对Zephyr项目的描述如下:

Zephyr 项目是一个轻量级的实时操作系统 (RTOS),专为物联网应用程序设计,由一个用于低优先级任务的微内核和一个用于处理实时部分的超内核组成。Zephyr 内存占用可低至 8KB,它支持 x86、ARMv7-M 和 ARC 指令集,包括蓝牙和 6LoWPAN 堆栈,以及用于 GPIO、ADC、I2C 和 SPI 的 I/O 驱动程序,并支持受限应用协议 (CoAP) 和数据报传输层安全协议(DTLS)。

从那时起,我们就看到该实时操作系统在多个无线微控制器中被使用,特别是Nordic Semi nRF 芯片和该公司nRF Connect SDK中的Zephyr部分、QuickLogic EOS S3 MCU + eFPGA SoC带有 LoRa 射频的 STM32 板以及更多其他SoC或开发板

Zephyr对ESP32系列SoC 的支持可能不像 ESP-IDF、Arduino 或 MicroPython 那样完整 [自 4 月起对 ESP32 适配,自 8 月起对 ESP32-C3 适配],但你可以找到入门文档,或2021 年 4 月的博客文章,其中解释了 UART、I2C、GPIO、SPI Master和Timers当时已经可以正常运行了。WiFi 最近已适配完成,Embarcados有一个葡萄牙语教程。还有更多的工作要做,如果你想了解进度可以查看Github 上的 Zephyr ESP32 路线图。上次更新是在7 月 26 日,其显示SMP(只能使用一个内核)、DMA、ULP、ADC、DAC、CAN 和 I2S 还在适配中。

NuttX RTOS  ESP32的支持

NuttX 也是一个实时操作系统,作为 POSIX 兼容的 8 位微控制器,它最初由 Greg Nutt 开发。NuttX 现在是一个 Apache孵化器项目,它从 8 位微控制器环境扩展到 32 位微控制器环境,并且主要遵循 POSIX 和 ANSI 标准,此外,它还可以采用来自Unix和其他常见RTOS如VxWorks的附加标准API来添加上述两个标准下没有的功能,或添加不适用于深度嵌入式环境的功能如进程创建函数fork()。

虽然 NuttX 比 Zephyr 更老,但并没有Zephyr那么用的多,并且我只用过一次,我将它用作 Sony Spresense boardSpresense SDK 的一部分。在最近的NuttX 新闻中,我们注意到由 500 MHz Microchip SAMA5 Cortex-A5 处理器驱动的Jupiter Nano 板支持 NuttX 和 Linux。

我们可以在 Apache NuttX 存储库中找到与 ESP32 相关的源代码,其中包含用于基于 Xtensa 的 WiSoC 的ESP32 和 ESP32-S2 文件夹,以及用于新 RISC-V 变体的ESP32-C3 文件夹。在我看文档的那几分钟里,我觉得Nuttx 文档比 Zephyr 更好,在Nuttx文档中我们可以轻松找到支持和不支持的功能列表。

NuttX 对ESP32的支持和不支持的功能列表
NuttX 对ESP32的支持和不支持的功能列表

同样是支持 GPIO 和 WiFi,但不支持蓝牙和 ADC 等其他功能。该列表似乎与 Zephyr 的列表大致相符,并且Zephyr 解释说,某些功能是通过 ESP-IDF 中使用的 FreeRTOS RTOS 深度实现的,因此这些功能更难移植到另一个操作系统中。

你还将可以找到一篇入门博客文章和另一篇展示了如何在ESP32 上通过 NuttX使用 LVGL 图形库的葡萄牙语博客文章,但这篇文章会带有英文屏幕截图。

乐鑫科技还表示,他们已经帮忙把 MCUboot安全物联网引导加载程序项目移植到了 Zephyr 和 NuttX,你可以找到最近的演示视频,这个演示视频详细介绍了如何在 ESP32-Devkit-C 开发板上使用 MCUboot 实现对 NuttX 的安全引导。

点击此处即可观看演示视频

很高兴能够看到Zephyr 和 NuttX RTOS 在过去几年中对 ESP32 的支持得到了极大的改进,但是否能商用还要取决于你的应用程序所需的功能集,因为有些功能尚不支持使用。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论