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 archive: libesp_common.a
entries: entries:
esp_err (noflash) 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_sleep (noflash_text)
rtc_time (noflash_text) rtc_time (noflash_text)
rtc_wdt (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 config PM_SLP_IRAM_OPT
bool "Put lightsleep related codes in internal RAM" bool "Put lightsleep related codes in internal RAM"
depends on FREERTOS_USE_TICKLESS_IDLE depends on FREERTOS_USE_TICKLESS_IDLE
default n
help 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. longer for 760us at most each time.
This feature is intended to be used when a lower power management mode is needed This feature is intended to be used when lower power consumption is needed
regardless of the internal memory. while there is enough place in IRAM to place source code.
config PM_RTOS_IDLE_OPT config PM_RTOS_IDLE_OPT
bool "Put RTOS IDLE related codes in internal RAM" bool "Put RTOS IDLE related codes in internal RAM"
depends on FREERTOS_USE_TICKLESS_IDLE depends on FREERTOS_USE_TICKLESS_IDLE
default n
help 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. longer for 40us at most each time.
This feature is intended to be used when a lower power management mode is needed This feature is intended to be used when lower power consumption is needed
regardless of the internal memory. while there is enough place in IRAM to place source code.
endmenu # "Power Management" endmenu # "Power Management"

View File

@@ -4,3 +4,50 @@ entries:
if PM_RTOS_IDLE_OPT = y: if PM_RTOS_IDLE_OPT = y:
pm_impl:esp_pm_impl_idle_hook (noflash) pm_impl:esp_pm_impl_idle_hook (noflash)
pm_impl:esp_pm_impl_waiti (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_cdc_acm_cb (noflash)
usb_console:esp_usb_console_dfu_detach_cb (noflash) usb_console:esp_usb_console_dfu_detach_cb (noflash)
usb_console:esp_usb_console_before_restart (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] [mapping:vfs_cdcacm]
archive: libvfs.a archive: libvfs.a

View File

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

View File

@@ -20,5 +20,3 @@ ifdef CONFIG_IDF_TARGET_ESP32
else else
$(error esp_timer is only supported by the Make build system for esp32 chip. For other chips, use the Cmake build system) $(error esp_timer is only supported by the Make build system for esp32 chip. For other chips, use the Cmake build system)
endif 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: entries:
heap (noflash) heap (noflash)
abort (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 CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
# Use RTC timer as reference # Use RTC timer as reference
CONFIG_PM_USE_RTC_TIMER_REF=y 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