mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-03 22:08:28 +00:00 
			
		
		
		
	Merge branch 'bugfix/deep_sleep_skip_verify_rtc_mem_heap_v4.3' into 'release/v4.3'
Fix bootloader "skip validate on exiting deep sleep" option if "use RTC memory as heap" is enabled (v4.3) See merge request espressif/esp-idf!13096
This commit is contained in:
		@@ -30,6 +30,7 @@
 | 
			
		||||
#include "soc/gpio_periph.h"
 | 
			
		||||
#include "soc/rtc.h"
 | 
			
		||||
#include "soc/efuse_reg.h"
 | 
			
		||||
#include "soc/soc_memory_layout.h"
 | 
			
		||||
#include "hal/gpio_ll.h"
 | 
			
		||||
#include "esp_image_format.h"
 | 
			
		||||
#include "bootloader_sha.h"
 | 
			
		||||
@@ -138,7 +139,18 @@ esp_err_t bootloader_common_get_partition_description(const esp_partition_pos_t
 | 
			
		||||
 | 
			
		||||
#if defined( CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP ) || defined( CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC )
 | 
			
		||||
 | 
			
		||||
rtc_retain_mem_t *const rtc_retain_mem = (rtc_retain_mem_t *)(SOC_RTC_DRAM_HIGH - sizeof(rtc_retain_mem_t));
 | 
			
		||||
#define RTC_RETAIN_MEM_ADDR (SOC_RTC_DATA_HIGH - sizeof(rtc_retain_mem_t))
 | 
			
		||||
 | 
			
		||||
rtc_retain_mem_t *const rtc_retain_mem = (rtc_retain_mem_t *)RTC_RETAIN_MEM_ADDR;
 | 
			
		||||
 | 
			
		||||
#if !IS_BOOTLOADER_BUILD
 | 
			
		||||
/* The app needs to be told this memory is reserved, important if configured to use RTC memory as heap.
 | 
			
		||||
 | 
			
		||||
   Note that keeping this macro here only works when other symbols in this file are referenced by the app, as
 | 
			
		||||
   this feature is otherwise 100% part of the bootloader. However this seems to happen in all apps.
 | 
			
		||||
 */
 | 
			
		||||
SOC_RESERVE_MEMORY_REGION(RTC_RETAIN_MEM_ADDR, RTC_RETAIN_MEM_ADDR + sizeof(rtc_retain_mem_t), rtc_retain_mem);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static bool check_rtc_retain_mem(void)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,14 @@
 | 
			
		||||
 | 
			
		||||
#include "sdkconfig.h"
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC
 | 
			
		||||
#define ESP_BOOTLOADER_RESERVE_RTC (CONFIG_BOOTLOADER_RESERVE_RTC_SIZE + CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC_SIZE)
 | 
			
		||||
#elif defined(CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP)
 | 
			
		||||
#define ESP_BOOTLOADER_RESERVE_RTC (CONFIG_BOOTLOADER_RESERVE_RTC_SIZE)
 | 
			
		||||
#else
 | 
			
		||||
#define ESP_BOOTLOADER_RESERVE_RTC 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SRAM_IRAM_START     0x4037C000
 | 
			
		||||
#define SRAM_DRAM_START     0x3FC7C000
 | 
			
		||||
#define ICACHE_SIZE         0x4000 /* ICache size is fixed to 16KB on ESP32-C3 */
 | 
			
		||||
@@ -65,7 +73,7 @@ MEMORY
 | 
			
		||||
  /**
 | 
			
		||||
   * RTC fast memory (executable). Persists over deep sleep.
 | 
			
		||||
   */
 | 
			
		||||
  rtc_iram_seg(RWX) :                org = 0x50000000, len = 0x2000
 | 
			
		||||
  rtc_iram_seg(RWX) :                org = 0x50000000, len = 0x2000 - ESP_BOOTLOADER_RESERVE_RTC
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if CONFIG_ESP32C3_USE_FIXED_STATIC_RAM_SIZE
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,14 @@
 | 
			
		||||
 | 
			
		||||
#include "sdkconfig.h"
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC
 | 
			
		||||
#define ESP_BOOTLOADER_RESERVE_RTC (CONFIG_BOOTLOADER_RESERVE_RTC_SIZE + CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC_SIZE)
 | 
			
		||||
#elif defined(CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP)
 | 
			
		||||
#define ESP_BOOTLOADER_RESERVE_RTC (CONFIG_BOOTLOADER_RESERVE_RTC_SIZE)
 | 
			
		||||
#else
 | 
			
		||||
#define ESP_BOOTLOADER_RESERVE_RTC 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SRAM_IRAM_START     0x40370000
 | 
			
		||||
#define SRAM_DRAM_START     0x3FC80000
 | 
			
		||||
#define I_D_SRAM_OFFSET     (SRAM_IRAM_START - SRAM_DRAM_START)
 | 
			
		||||
@@ -65,7 +73,7 @@ MEMORY
 | 
			
		||||
  /**
 | 
			
		||||
   * RTC fast memory (executable). Persists over deep sleep.
 | 
			
		||||
   */
 | 
			
		||||
  rtc_iram_seg(RWX) :                org = 0x600fe000, len = 0x2000
 | 
			
		||||
  rtc_iram_seg(RWX) :                org = 0x600fe000, len = 0x2000 - ESP_BOOTLOADER_RESERVE_RTC
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * RTC fast memory (same block as above), viewed from data bus
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user