feat(ulp): support placing ULP app in HP-RAM

This commit is contained in:
Marius Vikhammer
2026-04-29 09:47:33 +08:00
parent e17f46e240
commit 261bd160aa
31 changed files with 698 additions and 34 deletions
@@ -202,6 +202,15 @@ ULP LP 内核代码会与 ESP-IDF 项目共同编译,生成一个单独的二
ESP_ERROR_CHECK( ulp_lp_core_run(&cfg) );
从 HP 内存运行 LP 内核
~~~~~~~~~~~~~~~~~~~~~~
:ref:`CONFIG_ULP_COPROC_RUN_FROM_HP_MEM` 允许将 LP 内核应用的大部分代码和数据放到预留的 HP SRAM 中,而不是仅放在 LP RAM 中。当应用程序过大、无法完全放入 LP RAM 时,这种方式会很有用,同时仍然会将 LP 复位和处理程序代码保留在 LP 内存中。
启用该选项后,:ref:`CONFIG_ULP_COPROC_RESERVE_HP_MEM_BYTES` 会在 HP SRAM 顶部预留一段专供 LP 内核使用的内存窗口。在调用 :cpp:func:`ulp_lp_core_load_binary` 时,位于 LP 内存的段仍会加载到预留的 LP 区域,而映射到 HP 内存窗口的代码段和数据段则会复制到预留的 HP SRAM 区域。
该模式有一个重要限制:芯片进入 Deep-sleep 后,LP 内核无法继续运行,因为该睡眠模式下 HP SRAM 会被断电。因此,这种模式适用于 LP 内核只需要在 HP 系统保持上电时运行的场景;如果应用需要在 Deep-sleep 期间继续运行,则应继续使用默认的纯 LP 内存模式。
ULP LP 内核程序流程
-------------------