put pm_slp_iram_opt and pm_rtos_iram_opt related attributes in esp_pm/linker.lf

This commit is contained in:
ninh 2020-12-25 20:04:32 +08:00 committed by bot
parent b5db978499
commit e908a32381
10 changed files with 58 additions and 43 deletions

View File

@ -2,9 +2,3 @@
archive: libesp_common.a
entries:
esp_err (noflash)
if PM_RTOS_IDLE_OPT = y:
freertos_hooks:esp_vApplicationIdleHook (noflash)
task_wdt:idle_hook_cb (noflash)
task_wdt:esp_task_wdt_reset (noflash)
task_wdt:find_task_in_twdt_list (noflash)
task_wdt:reset_hw_timer (noflash)

View File

@ -11,5 +11,3 @@ entries:
rtc_sleep (noflash_text)
rtc_time (noflash_text)
rtc_wdt (noflash_text)
if PM_SLP_IRAM_OPT = y:
rtc_init:rtc_vddsdio_get_config (noflash)

View File

@ -62,20 +62,19 @@ menu "Power Management"
config PM_SLP_IRAM_OPT
bool "Put lightsleep related codes in internal RAM"
depends on FREERTOS_USE_TICKLESS_IDLE
default n
help
If enabled, about 1.8KB of lightsleep related codes would be in IRAM and chip would sleep
If enabled, about 1.8KB of lightsleep related source code would be in IRAM and chip would sleep
longer for 760us at most each time.
This feature is intended to be used when a lower power management mode is needed
regardless of the internal memory.
This feature is intended to be used when lower power consumption is needed
while there is enough place in IRAM to place source code.
config PM_RTOS_IDLE_OPT
bool "Put RTOS IDLE related codes in internal RAM"
depends on FREERTOS_USE_TICKLESS_IDLE
default n
help
If enabled, about 260B of RTOS_IDLE related codes would be in IRAM and chip would sleep
If enabled, about 260B of RTOS_IDLE related source code would be in IRAM and chip would sleep
longer for 40us at most each time.
This feature is intended to be used when a lower power management mode is needed
regardless of the internal memory.
This feature is intended to be used when lower power consumption is needed
while there is enough place in IRAM to place source code.
endmenu # "Power Management"

View File

@ -4,3 +4,50 @@ entries:
if PM_RTOS_IDLE_OPT = y:
pm_impl:esp_pm_impl_idle_hook (noflash)
pm_impl:esp_pm_impl_waiti (noflash)
[mapping:esp_common_pm]
archive: libesp_common.a
entries:
if PM_RTOS_IDLE_OPT = y:
freertos_hooks:esp_vApplicationIdleHook (noflash)
task_wdt:idle_hook_cb (noflash)
task_wdt:esp_task_wdt_reset (noflash)
task_wdt:find_task_in_twdt_list (noflash)
task_wdt:reset_hw_timer (noflash)
[mapping:esp_hw_support_pm]
archive: libesp_hw_support.a
entries:
if PM_SLP_IRAM_OPT = y:
rtc_init:rtc_vddsdio_get_config (noflash)
[mapping:esp_system_pm]
archive: libesp_system.a
entries:
if PM_SLP_IRAM_OPT = y:
sleep_modes:esp_light_sleep_start (noflash)
sleep_modes:esp_sleep_enable_timer_wakeup (noflash)
sleep_modes:timer_wakeup_prepare (noflash)
sleep_modes:get_power_down_flags (noflash)
[mapping:esp_timer_pm]
archive: libesp_timer.a
entries:
if PM_SLP_IRAM_OPT = y:
esp_timer_impl_lac:esp_timer_impl_lock (noflash)
esp_timer_impl_lac:esp_timer_impl_unlock (noflash)
esp_timer_impl_lac:esp_timer_impl_advance (noflash)
esp_timer_impl_systimer:esp_timer_impl_lock (noflash)
esp_timer_impl_systimer:esp_timer_impl_unlock (noflash)
esp_timer_impl_systimer:esp_timer_impl_advance (noflash)
[mapping:newlib_pm]
archive: libnewlib.a
entries:
if PM_SLP_IRAM_OPT = y:
esp_time_impl:esp_time_impl_set_boot_time (noflash)
esp_time_impl:esp_time_impl_get_boot_time (noflash)
esp_time_impl:esp_clk_slowclk_cal_get (noflash)
esp_time_impl:esp_rtc_get_time_us (noflash)
esp_time_impl:esp_clk_slowclk_cal_set (noflash)
esp_time_impl:esp_set_time_from_rtc (noflash)

View File

@ -23,12 +23,6 @@ entries:
usb_console:esp_usb_console_cdc_acm_cb (noflash)
usb_console:esp_usb_console_dfu_detach_cb (noflash)
usb_console:esp_usb_console_before_restart (noflash)
if PM_SLP_IRAM_OPT = y:
sleep_modes:esp_light_sleep_start (noflash)
sleep_modes:esp_sleep_enable_timer_wakeup (noflash)
sleep_modes:timer_wakeup_prepare (noflash)
sleep_modes:get_power_down_flags (noflash)
[mapping:vfs_cdcacm]
archive: libvfs.a

View File

@ -15,5 +15,4 @@ idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS include
PRIV_INCLUDE_DIRS private_include
REQUIRES esp_common
PRIV_REQUIRES soc driver "${target}"
LDFRAGMENTS linker.lf)
PRIV_REQUIRES soc driver "${target}")

View File

@ -20,5 +20,3 @@ ifdef CONFIG_IDF_TARGET_ESP32
else
$(error esp_timer is only supported by the Make build system for esp32 chip. For other chips, use the Cmake build system)
endif
COMPONENT_ADD_LDFRAGMENTS += linker.lf

View File

@ -1,10 +0,0 @@
[mapping:esp_timer]
archive: libesp_timer.a
entries:
if PM_SLP_IRAM_OPT = y:
esp_timer_impl_lac:esp_timer_impl_lock (noflash)
esp_timer_impl_lac:esp_timer_impl_unlock (noflash)
esp_timer_impl_lac:esp_timer_impl_advance (noflash)
esp_timer_impl_systimer:esp_timer_impl_lock (noflash)
esp_timer_impl_systimer:esp_timer_impl_unlock (noflash)
esp_timer_impl_systimer:esp_timer_impl_advance (noflash)

View File

@ -3,10 +3,3 @@ archive: libnewlib.a
entries:
heap (noflash)
abort (noflash)
if PM_SLP_IRAM_OPT = y:
esp_time_impl:esp_time_impl_set_boot_time (noflash)
esp_time_impl:esp_time_impl_get_boot_time (noflash)
esp_time_impl:esp_clk_slowclk_cal_get (noflash)
esp_time_impl:esp_rtc_get_time_us (noflash)
esp_time_impl:esp_clk_slowclk_cal_set (noflash)
esp_time_impl:esp_set_time_from_rtc (noflash)

View File

@ -6,3 +6,6 @@ CONFIG_PM_ENABLE=y
CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
# Use RTC timer as reference
CONFIG_PM_USE_RTC_TIMER_REF=y
# Put related source code in IRAM
CONFIG_PM_SLP_IRAM_OPT=y
CONFIG_PM_RTOS_IDLE_OPT=y