mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 04:02:27 +00:00
fix(rtc): fix .rtc_timer_data_in_rtc_mem wrongly in flash issue
This commit is contained in:
@@ -83,10 +83,19 @@ MEMORY
|
|||||||
*/
|
*/
|
||||||
#if CONFIG_ULP_COPROC_ENABLED
|
#if CONFIG_ULP_COPROC_ENABLED
|
||||||
lp_ram_seg(RW) : org = 0x50108000 + CONFIG_ULP_COPROC_RESERVE_MEM,
|
lp_ram_seg(RW) : org = 0x50108000 + CONFIG_ULP_COPROC_RESERVE_MEM,
|
||||||
len = 0x8000 - CONFIG_ULP_COPROC_RESERVE_MEM
|
len = 0x8000 - CONFIG_ULP_COPROC_RESERVE_MEM - RESERVE_RTC_MEM
|
||||||
#else
|
#else
|
||||||
lp_ram_seg(RW) : org = 0x50108000 , len = 0x8000
|
lp_ram_seg(RW) : org = 0x50108000 , len = 0x8000 - RESERVE_RTC_MEM
|
||||||
#endif // CONFIG_ULP_COPROC_ENABLED
|
#endif // CONFIG_ULP_COPROC_ENABLED
|
||||||
|
|
||||||
|
/* We reduced the size of lp_ram_seg by RESERVE_RTC_MEM value.
|
||||||
|
It reserves the amount of LP memory that we use for this memory segment.
|
||||||
|
This segment is intended for keeping:
|
||||||
|
- (lower addr) rtc timer data (s_rtc_timer_retain_mem, see esp_clk.c files).
|
||||||
|
- (higher addr) bootloader rtc data (s_bootloader_retain_mem, when a Kconfig option is on).
|
||||||
|
The aim of this is to keep data that will not be moved around and have a fixed address.
|
||||||
|
*/
|
||||||
|
lp_reserved_seg(RW) : org = 0x50000000 + 0x8000 - RESERVE_RTC_MEM, len = RESERVE_RTC_MEM
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Heap ends at top of dram0_0_seg */
|
/* Heap ends at top of dram0_0_seg */
|
||||||
@@ -103,6 +112,7 @@ REGION_ALIAS("rtc_iram_seg", lp_ram_seg );
|
|||||||
REGION_ALIAS("rtc_data_seg", rtc_iram_seg );
|
REGION_ALIAS("rtc_data_seg", rtc_iram_seg );
|
||||||
REGION_ALIAS("rtc_slow_seg", rtc_iram_seg );
|
REGION_ALIAS("rtc_slow_seg", rtc_iram_seg );
|
||||||
REGION_ALIAS("rtc_data_location", rtc_iram_seg );
|
REGION_ALIAS("rtc_data_location", rtc_iram_seg );
|
||||||
|
REGION_ALIAS("rtc_reserved_seg", lp_reserved_seg );
|
||||||
|
|
||||||
#if CONFIG_APP_BUILD_USE_FLASH_SECTIONS
|
#if CONFIG_APP_BUILD_USE_FLASH_SECTIONS
|
||||||
REGION_ALIAS("default_code_seg", irom_seg);
|
REGION_ALIAS("default_code_seg", irom_seg);
|
||||||
|
@@ -104,6 +104,27 @@ SECTIONS
|
|||||||
_rtc_force_slow_end = ABSOLUTE(.);
|
_rtc_force_slow_end = ABSOLUTE(.);
|
||||||
} > lp_ram_seg
|
} > lp_ram_seg
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This section holds RTC data that should have fixed addresses.
|
||||||
|
* The data are not initialized at power-up and are retained during deep sleep.
|
||||||
|
*/
|
||||||
|
.rtc_reserved (NOLOAD):
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
_rtc_reserved_start = ABSOLUTE(.);
|
||||||
|
/* New data can only be added here to ensure existing data are not moved.
|
||||||
|
Because data have adhered to the end of the segment and code is relied on it.
|
||||||
|
>> put new data here << */
|
||||||
|
|
||||||
|
*(.rtc_timer_data_in_rtc_mem .rtc_timer_data_in_rtc_mem.*)
|
||||||
|
KEEP(*(.bootloader_data_rtc_mem .bootloader_data_rtc_mem.*))
|
||||||
|
_rtc_reserved_end = ABSOLUTE(.);
|
||||||
|
} > rtc_reserved_seg
|
||||||
|
|
||||||
|
_rtc_reserved_length = _rtc_reserved_end - _rtc_reserved_start;
|
||||||
|
ASSERT((_rtc_reserved_length <= LENGTH(rtc_reserved_seg)),
|
||||||
|
"RTC reserved segment data does not fit.")
|
||||||
|
|
||||||
/* Get size of rtc slow data based on rtc_data_location alias */
|
/* Get size of rtc slow data based on rtc_data_location alias */
|
||||||
_rtc_slow_length = (ORIGIN(rtc_slow_seg) == ORIGIN(rtc_data_location))
|
_rtc_slow_length = (ORIGIN(rtc_slow_seg) == ORIGIN(rtc_data_location))
|
||||||
? (_rtc_force_slow_end - _rtc_data_start)
|
? (_rtc_force_slow_end - _rtc_data_start)
|
||||||
|
Reference in New Issue
Block a user