feat(etm): support sleep retention
This commit is contained in:
@@ -32,6 +32,7 @@ ETM 模块具有多个通道,这些通道支持用户根据需要进行配置
|
||||
- :ref:`etm-event` - 介绍如何分配新的 ETM 事件句柄,以及如何从不同外设获取现有句柄。
|
||||
- :ref:`etm-task` - 介绍如何分配新的 ETM 任务句柄,以及如何从不同外设获取现有句柄。
|
||||
- :ref:`etm-channel-control` - 介绍常见的 ETM 通道控制函数。
|
||||
- :ref:`etm-power-management` - 介绍了驱动针对功耗管理提供的选项和策略。
|
||||
- :ref:`etm-thread-safety` - 列出了驱动程序中始终线程安全的 API。
|
||||
- :ref:`etm-kconfig-options` - 列出了 ETM 支持的 Kconfig 选项,这些选项对驱动程序的行为会产生不同影响。
|
||||
|
||||
@@ -131,6 +132,17 @@ ETM 通道分析
|
||||
|
||||
以上输出信息打印的数字 ID 在 ``soc/soc_etm_source.h`` 文件中定义。
|
||||
|
||||
.. _etm-power-management:
|
||||
|
||||
电源管理
|
||||
^^^^^^^^
|
||||
|
||||
当启用电源管理时,即 :ref:`CONFIG_PM_ENABLE` 打开的时候,系统可能会调整或禁用时钟源,并在进入睡眠前关闭 ETM 外设依赖的电源。这会导致事件和任务之间的连接信息被丢失,ETM 通道在唤醒后无法正常工作。因此,默认情况下,驱动程序会获取电源管理锁,以禁止系统关闭 ETM 外设。
|
||||
|
||||
.. only:: SOC_ETM_SUPPORT_SLEEP_RETENTION
|
||||
|
||||
如果你想节省更多电量,可以将 :cpp:member:`esp_etm_channel_config_t::etm_chan_flags::allow_pd` 设置为 ``true``。ETM 寄存器将在睡眠前备份,并在唤醒后恢复。请注意,启用此选项会增加内存消耗,用于保存寄存器上下文。
|
||||
|
||||
.. _etm-thread-safety:
|
||||
|
||||
线程安全
|
||||
|
||||
@@ -148,19 +148,19 @@ ESP-IDF 中集成的电源管理算法可以根据应用程序组件的需求,
|
||||
- INT_MTX
|
||||
- TEE/APM
|
||||
- IO_MUX / GPIO
|
||||
- Timer Group 0 & Timer Group 1
|
||||
- SPI0/1
|
||||
- SYSTIMER
|
||||
:SOC_TIMER_SUPPORT_SLEEP_RETENTION: - GPTimer
|
||||
:SOC_RMT_SUPPORT_SLEEP_RETENTION: - RMT
|
||||
:SOC_I2C_SUPPORT_SLEEP_RETENTION: - I2C
|
||||
:SOC_I2S_SUPPORT_SLEEP_RETENTION: - I2S
|
||||
:SOC_ETM_SUPPORT_SLEEP_RETENTION: - ETM
|
||||
:SOC_UART_SUPPORT_SLEEP_RETENTION: - All UARTs
|
||||
|
||||
以下外设尚未支持:
|
||||
|
||||
.. list::
|
||||
|
||||
- ETM
|
||||
- ASSIST_DEBUG
|
||||
- Trace
|
||||
- Crypto: AES/ECC/HMAC/RSA/SHA/DS/XTA_AES/ECDSA
|
||||
|
||||
Reference in New Issue
Block a user