Merge branch 'feature/s31_lpcpu_pmp' into 'master'

feat(ulp): support lp-core PMP on ESP32-S31

Closes IDF-15240

See merge request espressif/esp-idf!48335
This commit is contained in:
Marius Vikhammer
2026-05-12 11:14:20 +08:00
20 changed files with 404 additions and 14 deletions
@@ -13,6 +13,10 @@ ULP LP 内核协处理器具有以下功能:
* 当整个系统处于 active 模式时,可以访问所有的高功耗 (HP) SRAM 和外设。
* 当 HP 系统处于睡眠模式时,可以访问低功耗 (LP) SRAM 和外设。
.. only:: SOC_LP_CORE_HAS_PMP
在支持的芯片上,LP 内核提供 RISC-V 物理内存保护(PMP)。启用 :ref:`CONFIG_ULP_LP_CORE_MEMPROT` 后,LP 内核启动时会配置默认拒绝访问的 PMP 布局:LP RAM 分为可执行区(代码与只读数据)与可读写区(可写数据、栈与共享内存),LP 外设地址空间为可读写;启用 :ref:`CONFIG_ULP_HP_UART_CONSOLE_PRINT` 时还会为 HP UART MMIO 增加相应条目。PMP 不能与 :ref:`CONFIG_ULP_COPROC_RUN_FROM_HP_MEM` 同时启用。未落入允许区域的访问将触发加载、存储或取指访问异常。
编译 ULP LP 内核代码
--------------------
@@ -211,6 +215,8 @@ ULP LP 内核代码会与 ESP-IDF 项目共同编译,生成一个单独的二
该模式有一个重要限制:芯片进入 Deep-sleep 后,LP 内核无法继续运行,因为该睡眠模式下 HP SRAM 会被断电。因此,这种模式适用于 LP 内核只需要在 HP 系统保持上电时运行的场景;如果应用需要在 Deep-sleep 期间继续运行,则应继续使用默认的纯 LP 内存模式。
:ref:`CONFIG_ULP_LP_CORE_MEMPROT` 不能与 HP 内存模式同时启用。
ULP LP 内核程序流程
-------------------