乐鑫对 Zephyr 的最新支持
中国,上海
2022年5月30日
过去一年中,乐鑫持续进行 Zephyr 项目开发,不仅增加了移植层和外设驱动,而且还在 Zephyr 工具、代码库和 Bug 修复等方面有所贡献。本文旨在介绍我们近期对 Zephyr 的新增支持,以及未来对该项目的支持方向。
通往低功耗模式之路
Zephyr 正在从 Pin Mux 向 Pin Control 转变。Pin Control 是一种新的机制,它为配置 IO 引脚的输入输出方向和启用上拉/下拉,提供了一种更好的方式。更重要的是,它支持将引脚分配给一个特定的外设。相较于 Zephyr 用户,这项功能对那些致力于提供架构支持的人影响更大。
目前乐鑫 ESP SoC 的 Pin Control 移植工作已经完成,这也意味着我们在芯片低功耗方面达到了一个重要的里程碑。
Wi-Fi 管理器支持
我们在 ESP SoC 上移植 Zephyr 时,发现 ESP SoC 已经以扩展芯片的方式成为 Wi-Fi 解决方案。大多数系统还会包含另一个运行 Zephyr 的 CPU,它通过串行端口连接到 ESP SoC 之后,就可以连 Wi-Fi 了。
ESP SoC 更适合这类应用,并且是第一批被移植到 Zephyr 的自带 Wi-Fi 功能的芯片。值得一提的是,我们还成功支持了 Zephyr 的 Wi-Fi 管理器。虽然没有为它增加新功能,但可以使已经使用 Wi-Fi 管理器 API 的用户,由此逐渐熟悉对 ESP SoC Wi-Fi 系统的控制。
ESP SoC 上的 Zephyr 与并行处理
非对称多处理 (Asymmetric Multiprocessing, AMP) 是乐鑫实现对 Zephyr 支持的重要突破之一。总的来说,AMP 意味着将系统中的每一个内核都作为独立的处理器,来运行自己的任务/固件/操作系统等。从某种意义上说,这就像在单个微控制器中进行并行计算(这一点在 ESP-IDF 中还未进行过探索)。
Zephyr 的 AMP 解决方案与 ESP-IDF 解决方案在多核微控制器的使用方式上有所不同。到目前为止,ESP-IDF 侧重于 SMP(对称多处理),而 Zephyr 则是 AMP。对乐鑫来说,在 ESP SoC 上提供 AMP 的首要目标是:
- 网络负载处理:一个核心负责处理网络负载,另一个专用于运行用户应用程序
- 并行嵌入式软件:允许非关键程序与关键程序分开执行
- 冗余处理:同一套固件可以在 ESP SoC 不同内核上并行运行
- 通用并行处理:在一个封装中提供两个 MCU
目前,这部分还处于 Push Request 阶段,还未正式合并,用户可以进行测试。
外设支持
ESP SoC 的外设资源丰富,移植工作也相对复杂。我们非常感谢来自 Zephyr 社区的开发者们与我们合作移植外设。目前,ESP SoC 外设的移植状态如下:
表格说明:
- Beta:功能已开发,或处于最终测试/合并阶段
- WIP:乐鑫团队正在进行的工作
- Community:社区成员正在进行的工作
- Yes:支持该特性
- No:不支持该特性
- N/A:不适用于本设备
- 所有支持取决于具体场景
为何上表未列出 ESP32-S3 的支持情况?
我们已经开始了 ESP32-S3 的移植工作。值得注意的是 ESP32-S3 是一款比较特殊的 SoC,相较于 ESP32-S2,它增加了双核和蓝牙支持;相较于 ESP32,它增加了一个 USB-OTG 外设和更强大的 CPU。
总而言之,ESP32-S3 的开发在被正式纳入 Zephyr 项目前需要满足以下三个条件:
- 多核支持:我们正尝试通过 AMP 实现(这是目前的一个代码合并请求)
- 低功耗模式:已开展相关工作
- 对 USB-OTG 的支持:将在后续计划中实现
在满足上述三个条件之前,我们建议开发者优先使用 ESP32 或 ESP32-S2。现阶段,它们是运行 Zephyr 的最佳选择。
未来的支持方向
乐鑫计划持续支持 Zephyr 项目。我们将重点开发基于 ESP SoC 的 Zephyr AMP 方案,使操作系统在不同微控制器上实现并行处理。
乐鑫欢迎广大用户为我们提供宝贵意见和建议,我们将高度重视所有反馈,持续优化并改进产品,为构建物联网项目提供更全面和便捷的支持。
相关资源