Zephyr 中的 ESP32-C5 SoC 特性与 LP Core 低功耗协处理器开发指南
2026/9/17 3:27:30 网站建设 项目流程

Zephyr 中的 ESP32-C5 SoC 特性与 LP Core 低功耗协处理器开发指南

【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr

ESP32-C5 是乐鑫首款集成 2.4GHz/5GHz 双频 Wi-Fi 6、蓝牙 5.4(LE)与 802.15.4 协议的单芯片 SoC,配备高主频 HP RISC-V 核心与超低功耗 LP RISC-V 核心。本文以 boards/espressif/common/soc-esp32c5-features.rst 为核心骨架,结合 Zephyr 仓库中 ESP32-C5 的 SoC 源码、板级支持与 sysbuild 集成实现,系统讲解该芯片的外设资源、双核架构,以及如何在 Zephyr 中启用 LP Core 协处理器并进行实战开发。

ESP32-C5 芯片概览

ESP32-C5 是 Espressif 面向 IoT 产品推出的首款双频 Wi-Fi 6 SoC,在 Zephyr 中的支持代码位于 soc/espressif/esp32c5 目录。其整体定位可从官方文档概括为三点:

  • 双频 Wi-Fi 6:同时集成 2.4 GHz 与 5 GHz 频段的 Wi-Fi 6(802.11 ax),并向下完全兼容 IEEE 802.11b/g/n/a/ac 协议;
  • 多协议无线共存:集成蓝牙 5.4(LE)与 IEEE 802.15.4(Zigbee 与 Thread),芯片内部提供 Wi-Fi 与蓝牙之间的共存机制,可共享同一根天线;
  • 双核异构计算:由一颗最高 240 MHz 的高性能(HP)32 位 RISC-V 处理器和一颗最高 20 MHz 的低功耗(LP)32 位 RISC-V 处理器组成,配备 384 KB 内部 SRAM,并支持外接最高 16 MB 的 flash 与 PSRAM。

从 RF 性能、安全特性与多内存资源的角度看,该芯片面向的是需要长续航、多协议接入的 IoT 产品场景。

处理器与内存资源

HP Core 与 LP Core 双 RISC-V 核心

ESP32-C5 SoC 内部拥有两颗 RISC-V 核心,这一架构在 Zephyr 中被映射为两个独立的 soc 标识:

核心主频在 Zephyr 中的 SoC 标识典型职责
High-Performance Core(HP CORE)最高 240 MHzSOC_ESP32C5_HPCORE运行主应用、无线协议栈与常规外设驱动
Low-Power Core(LP CORE)最高 20 MHzSOC_ESP32C5_LPCORE低功耗唤醒事件处理、轻量任务辅助计算

LP Core 默认处于休眠状态,其内部包含独立的中断控制器、调试模块,以及用于内存与外设访问的系统总线接口。在 Zephyr 源码中,LP Core 的启动与初始化由 soc/espressif/esp32c5/start_lpcore.S、soc/espressif/esp32c5/soc_lpcore.c 与 soc/espressif/esp32c5/hpcore_init_ulp.c 共同实现。

内存资源

  • 384 KB 内部 SRAM:作为系统主内存,供 HP Core 运行 Zephyr 内核与应用;
  • 外部 flash 与 PSRAM:最高支持 16 MB,用于存放固件映像与运行期数据扩展;
  • ULP RAM 预留:在启用 LP Core 时,链接脚本 soc/espressif/esp32c5/default.ld 会根据 devicetree 中的ulp_ram节点大小为 ULP 协处理器固件与数据预留 LP SRAM,该值由 Kconfig 选项ESP32_ULP_COPROC_RESERVE_MEM自动派生(见 soc/espressif/Kconfig.ulp)。

外设资源清单

数字接口

  • GPIO:29 路通用 GPIO;
  • UART:2 路通用 UART + 1 路低功耗(LP)UART,LP UART 供 LP Core 在低功耗场景下与外部通信;
  • SPI:1 路通用 SPI;
  • I2C:1 路 I2C + 1 路低功耗(LP)I2C;
  • I2S:1 路数字音频总线;
  • Pulse counter:1 路脉冲计数器;
  • USB:1 路 USB Serial/JTAG 控制器,可同时承担串口调试与 JTAG 调试;
  • TWAI:2 路 TWAI 控制器,兼容 ISO 11898-1(CAN Specification 2.0);
  • LED PWM:LED PWM 控制器,最多 6 通道;
  • MCPWM:1 路电机控制 PWM;
  • GDMA:通用 DMA 控制器,3 个发送通道 + 3 个接收通道;
  • ETM:事件任务矩阵(Event Task Matrix),用于外设事件与任务之间的硬件级互联。

上述外设在 Zephyr 中的驱动支持可从板级定义中印证:以 ESP32-C5-DevKitC-1 开发板为例,其 HP Core 目标 boards/espressif/esp32c5_devkitc/esp32c5_devkitc_hpcore.yaml 声明了adccangpiowatchdoguartdmapwmspicounterentropyi2ci2snetif:openthreadnetif:wificryptoretained_mempulse_io等受支持外设。

模拟接口

  • ADC:1 路 12 位 SAR ADC,最多 6 通道;
  • 温度传感器:1 路片上温度传感器。

定时器

  • 系统定时器:1 路 52 位系统定时器;
  • 通用定时器:1 路 54 位通用定时器;
  • 看门狗:3 路看门狗定时器;
  • 模拟看门狗:1 路模拟看门狗定时器。

Zephyr 中为 ESP32-C5 提供了相应的counterwatchdogtimer驱动支持,板级默认配置(如 esp32c5_devkitc_hpcore_defconfig)即启用了CONFIG_GPIOCONFIG_SERIALCONFIG_UART_CONSOLE等基础外设。

低功耗模式

ESP32-C5 针对典型场景设计了四种电源模式:

  1. Active(活跃模式):HP Core 与无线模块全速运行;
  2. Modem-sleep(Modem 休眠):无线收发模块休眠,CPU 保持运行;
  3. Light-sleep(浅睡眠):CPU 暂停,由外部事件或定时器唤醒;
  4. Deep-sleep(深度睡眠):仅保留 RTC 域,由 LP Core 或低功耗外设接管唤醒处理。

安全特性

  • Secure boot:安全启动,校验固件签名与完整性;
  • Flash encryption:Flash 加密,保护固件与数据;
  • OTP:4-Kbit 一次性可编程存储器,其中最高 1792 位可供用户使用;
  • 密码学硬件加速:AES-128/256、ECC、HMAC、RSA、SHA、数字签名(Digital signature)、哈希(Hash);
  • RNG:真随机数发生器。

Zephyr 中对应的cryptoentropy驱动已在 ESP32-C5 板级目标中启用(见 esp32c5_devkitc_hpcore.yaml 的supported列表)。

深入 LP Core:应用场景与工作机制

LP Core(低功耗核心)是 ESP32-C5 双核架构中最具特色的部分,它包含独立的 RISC-V 处理器、中断控制器、调试模块以及系统总线接口,可独立访问内存与外设。

两种典型应用场景

官方文档明确了 LP Core 的两种设计场景:

  1. 功耗不敏感场景(Power insensitive):当 HP CPU 处于活跃状态时,LP Core 可协助 HP CPU 处理一些对速度和效率不敏感的轻量控制与计算任务,从而释放 HP CPU 算力;
  2. 功耗敏感场景(Power sensitive):当 HP CPU 进入断电状态以节省功耗时,LP Core 可被外部唤醒事件唤醒,独立完成事件处理,例如在深度睡眠期间监听 GPIO 中断或周期性地被 LP 定时器唤醒执行采样与上报。

唤醒源配置

在 Zephyr 中,LP Core 的唤醒源由 Kconfig 选项控制(见 soc/espressif/Kconfig.ulp):

唤醒源配置项说明
HP CPU(单次唤醒)ESP32_ULP_LP_CORE_WAKEUP_SOURCE_HP_CPULP Core 由 HP CPU 启动一次,默认选项
LP 定时器(周期性唤醒)ESP32_ULP_LP_CORE_WAKEUP_SOURCE_LP_TIMERLP Core 按周期从 LP 定时器唤醒,休眠时长由ESP32_ULP_LP_CORE_LP_TIMER_SLEEP_DURATION_US配置(默认 2000000 µs,即 2 秒)
LP IO(GPIO 中断唤醒)ESP32_ULP_LP_CORE_WAKEUP_SOURCE_LP_IOLP Core 由 LP IO 的 GPIO 中断唤醒

当选择ESP32_ULP_COPROC_TYPE_LP_CORE后,还可以通过 soc/espressif/Kconfig.ulp 中的调试选项控制 LP Core 的 panic 输出(ESP32_ULP_PANIC_OUTPUT_ENABLE,经 LP UART 输出)、将lp_core_printf路由到 HP UART 控制台(ESP32_ULP_HP_UART_CONSOLE_PRINT)、调试器附着时不复位 LP Core(ESP32_ULP_NORESET_UNDER_DEBUG)以及 LP Core 遇到异常时唤醒 HP CPU(ESP32_ULP_TRAP_WAKEUP,默认启用)。

在 Zephyr 中启用 LP Core(sysbuild 集成)

LP Core 支持已完整集成到 Zephyr 的sysbuild多镜像构建体系中。要在一个项目中同时构建 HP Core 与 LP Core 两套固件,只需在项目的 Kconfig 中加入:

CONFIG_ESP32_ULP_COPROC_ENABLED=y

该选项定义于 soc/espressif/Kconfig.ulp,开启后:

  • Kconfig 菜单将展开更多 ULP 协处理器子配置(协处理器类型、唤醒源、LP SRAM 预留、调试选项等);
  • 当目标为 HP Core(SOC_ESP32C5_HPCORE)时,会自动select SOC_LATE_INIT_HOOK,使系统在晚初始化阶段拉起 LP Core(见 soc/espressif/esp32c5/CMakeLists.txt 中zephyr_sources_ifdef(CONFIG_ESP32_ULP_COPROC_ENABLED hpcore_init_ulp.c)的编译条件);
  • 当目标本身是 LP Core(SOC_ESP32C5_LPCORE)时,该选项默认为y(见 soc/espressif/Kconfig.ulp)。

板级目标与构建示例

ESP32-C5-DevKitC-1 开发板在 Zephyr 中提供两个独立构建目标:

  • HP Core 目标esp32c5_devkitc/esp32c5/hpcore,定义于 esp32c5_devkitc_hpcore.yaml,支持adccangpiouartdmapwmspii2ci2snetif:wifinetif:openthread等外设;
  • LP Core 目标esp32c5_devkitc/esp32c5/lpcore,定义于 esp32c5_devkitc_lpcore.yaml,支持cpuuartserial,其默认配置 esp32c5_devkitc_lpcore_defconfig 为节省 RAM 关闭了线程栈信息与自定义线程数据、关闭启动横幅与printk,并启用了CONFIG_SIZE_OPTIMIZATIONS进行体积优化。

以 LP Core 系列示例的构建方式为例(以下命令适用于同类 LP Core 示例,如echo_ulp):

west build -b esp32c6_devkitc/esp32c6/hpcore samples/boards/espressif/ulp/lp_core/echo_ulp --sysbuild

注:当前仓库中echo_ulp等示例的官方板级支持以 ESP32-C6 为参照(见 samples/boards/espressif/ulp/lp_core/echo_ulp/README.rst),ESP32-C5 与之共享相同的 LP Core 软件框架(SOC_SERIES_ESP32C5SOC_SERIES_ESP32C6在 Kconfig 中同属 LP Core 类型分支,见 soc/espressif/Kconfig.ulp)。构建 ESP32-C5 工程时,将板级目标替换为esp32c5_devkitc/esp32c5/hpcore并同样追加--sysbuild参数即可。

仓库中的参考示例

仓库中与 ESP32-C5 / LP Core 直接相关的可参考资源包括:

  • LP Core 示例集合:samples/boards/espressif/ulp/lp_core,包含echo_ulp(LP UART 回显)、gpio_wakeup(GPIO 唤醒)、timer_wakeup(定时器唤醒)、interrupt_ulp(中断)、debug_ulp(调试)等完整子示例,每个示例均采用 HP Core + LP Core 的 sysbuild 双镜像结构;
  • ESP32-C5 低功耗示例 overlay:samples/boards/espressif/deep_sleep/boards/esp32c5_devkitc_hpcore.overlay,展示在 ESP32-C5 HP Core 上配置深度睡眠;
  • LP UART 测试用例:tests/boards/espressif/lp_uart 与 tests/boards/espressif/lp_uart_lpcore,后者同时包含 HP Core 与 LP Core(remote目录)两端的 overlay 配置,可验证双核 UART 通信链路;
  • QDEC 触发示例:samples/boards/espressif/qdec_trigger/boards/esp32c5_devkitc_esp32c5_hpcore.overlay,演示基于脉冲计数器的应用。

实战要点总结

  • 选型定位:ESP32-C5 适合需要同时接入 2.4G/5G Wi-Fi 6、BLE 与 Zigbee/Thread 三种无线协议的 IoT 产品,其 240 MHz HP 核心 + 20 MHz LP 核心的异构架构可兼顾算力与续航;
  • 开发方式:HP Core 作为主应用核心运行标准 Zephyr 应用;需要低功耗常驻逻辑时,通过 sysbuild 将 LP Core 作为独立镜像一同构建;
  • 启用开关:在工程 Kconfig 中设置CONFIG_ESP32_ULP_COPROC_ENABLED=y即可启用 LP Core 支持,其余子配置(唤醒源、LP SRAM 预留、调试输出)可按需展开;
  • 调试手段:LP Core 的 panic 信息经 LP UART 输出(ESP32_ULP_PANIC_OUTPUT_ENABLE);开发阶段也可将lp_core_printf路由到 HP UART 控制台(ESP32_ULP_HP_UART_CONSOLE_PRINT),但需注意该方式无互斥保护,且 HP Core 深度睡眠时不可用,生产环境应使用 LP UART;
  • 资源规划:启用 LP Core 时链接脚本会根据ulp_ram节点自动预留 LP SRAM(由ESP32_ULP_COPROC_RESERVE_MEM派生),开发者无需手工调整内存布局。

如需查阅芯片级寄存器与电气细节,可进一步阅读 ESP32-C5 Datasheet 与 ESP32-C5 Technical Reference Manual(原始文档末尾已提供官方链接);本文所引用的所有软件实现与配置证据均可在当前 Zephyr 仓库内对应路径找到并深入研读。

【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询