Zephyr 中的 ESP32-C5 SoC 特性与 LP Core 低功耗协处理器开发指南
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/zephyrESP32-C5 是乐鑫首款集成 2.4GHz/5GHz 双频 Wi-Fi 6、蓝牙 5.4LE与 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 6802.11 ax并向下完全兼容 IEEE 802.11b/g/n/a/ac 协议多协议无线共存集成蓝牙 5.4LE与 IEEE 802.15.4Zigbee 与 Thread芯片内部提供 Wi-Fi 与蓝牙之间的共存机制可共享同一根天线双核异构计算由一颗最高 240 MHz 的高性能HP32 位 RISC-V 处理器和一颗最高 20 MHz 的低功耗LP32 位 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 CoreHP CORE最高 240 MHzSOC_ESP32C5_HPCORE运行主应用、无线协议栈与常规外设驱动Low-Power CoreLP 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。外设资源清单数字接口GPIO29 路通用 GPIOUART2 路通用 UART 1 路低功耗LPUARTLP UART 供 LP Core 在低功耗场景下与外部通信SPI1 路通用 SPII2C1 路 I2C 1 路低功耗LPI2CI2S1 路数字音频总线Pulse counter1 路脉冲计数器USB1 路 USB Serial/JTAG 控制器可同时承担串口调试与 JTAG 调试TWAI2 路 TWAI 控制器兼容 ISO 11898-1CAN Specification 2.0LED PWMLED PWM 控制器最多 6 通道MCPWM1 路电机控制 PWMGDMA通用 DMA 控制器3 个发送通道 3 个接收通道ETM事件任务矩阵Event Task Matrix用于外设事件与任务之间的硬件级互联。上述外设在 Zephyr 中的驱动支持可从板级定义中印证以 ESP32-C5-DevKitC-1 开发板为例其 HP Core 目标 boards/espressif/esp32c5_devkitc/esp32c5_devkitc_hpcore.yaml 声明了adc、can、gpio、watchdog、uart、dma、pwm、spi、counter、entropy、i2c、i2s、netif:openthread、netif:wifi、crypto、retained_mem、pulse_io等受支持外设。模拟接口ADC1 路 12 位 SAR ADC最多 6 通道温度传感器1 路片上温度传感器。定时器系统定时器1 路 52 位系统定时器通用定时器1 路 54 位通用定时器看门狗3 路看门狗定时器模拟看门狗1 路模拟看门狗定时器。Zephyr 中为 ESP32-C5 提供了相应的counter、watchdog与timer驱动支持板级默认配置如 esp32c5_devkitc_hpcore_defconfig即启用了CONFIG_GPIO、CONFIG_SERIAL与CONFIG_UART_CONSOLE等基础外设。低功耗模式ESP32-C5 针对典型场景设计了四种电源模式Active活跃模式HP Core 与无线模块全速运行Modem-sleepModem 休眠无线收发模块休眠CPU 保持运行Light-sleep浅睡眠CPU 暂停由外部事件或定时器唤醒Deep-sleep深度睡眠仅保留 RTC 域由 LP Core 或低功耗外设接管唤醒处理。安全特性Secure boot安全启动校验固件签名与完整性Flash encryptionFlash 加密保护固件与数据OTP4-Kbit 一次性可编程存储器其中最高 1792 位可供用户使用密码学硬件加速AES-128/256、ECC、HMAC、RSA、SHA、数字签名Digital signature、哈希HashRNG真随机数发生器。Zephyr 中对应的crypto与entropy驱动已在 ESP32-C5 板级目标中启用见 esp32c5_devkitc_hpcore.yaml 的supported列表。深入 LP Core应用场景与工作机制LP Core低功耗核心是 ESP32-C5 双核架构中最具特色的部分它包含独立的 RISC-V 处理器、中断控制器、调试模块以及系统总线接口可独立访问内存与外设。两种典型应用场景官方文档明确了 LP Core 的两种设计场景功耗不敏感场景Power insensitive当 HP CPU 处于活跃状态时LP Core 可协助 HP CPU 处理一些对速度和效率不敏感的轻量控制与计算任务从而释放 HP CPU 算力功耗敏感场景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 IOGPIO 中断唤醒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 CoreESP32_ULP_NORESET_UNDER_DEBUG以及 LP Core 遇到异常时唤醒 HP CPUESP32_ULP_TRAP_WAKEUP默认启用。在 Zephyr 中启用 LP Coresysbuild 集成LP Core 支持已完整集成到 Zephyr 的sysbuild多镜像构建体系中。要在一个项目中同时构建 HP Core 与 LP Core 两套固件只需在项目的 Kconfig 中加入CONFIG_ESP32_ULP_COPROC_ENABLEDy该选项定义于 soc/espressif/Kconfig.ulp开启后Kconfig 菜单将展开更多 ULP 协处理器子配置协处理器类型、唤醒源、LP SRAM 预留、调试选项等当目标为 HP CoreSOC_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 CoreSOC_ESP32C5_LPCORE时该选项默认为y见 soc/espressif/Kconfig.ulp。板级目标与构建示例ESP32-C5-DevKitC-1 开发板在 Zephyr 中提供两个独立构建目标HP Core 目标esp32c5_devkitc/esp32c5/hpcore定义于 esp32c5_devkitc_hpcore.yaml支持adc、can、gpio、uart、dma、pwm、spi、i2c、i2s、netif:wifi、netif:openthread等外设LP Core 目标esp32c5_devkitc/esp32c5/lpcore定义于 esp32c5_devkitc_lpcore.yaml支持cpu、uart、serial其默认配置 esp32c5_devkitc_lpcore_defconfig 为节省 RAM 关闭了线程栈信息与自定义线程数据、关闭启动横幅与printk并启用了CONFIG_SIZE_OPTIMIZATIONS进行体积优化。以 LP Core 系列示例的构建方式为例以下命令适用于同类 LP Core 示例如echo_ulpwest 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.rstESP32-C5 与之共享相同的 LP Core 软件框架SOC_SERIES_ESP32C5与SOC_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_ulpLP UART 回显、gpio_wakeupGPIO 唤醒、timer_wakeup定时器唤醒、interrupt_ulp中断、debug_ulp调试等完整子示例每个示例均采用 HP Core LP Core 的 sysbuild 双镜像结构ESP32-C5 低功耗示例 overlaysamples/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 Coreremote目录两端的 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_ENABLEDy即可启用 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),仅供参考