feat(coredump): add coredump_noinit attribute

This commit is contained in:
Erhan Kurubas
2026-05-12 21:30:12 +08:00
committed by BOT
parent 73285773ca
commit 11ec258dcc
6 changed files with 39 additions and 1 deletions
+7
View File
@@ -119,7 +119,14 @@ extern "C" {
// Allows to place data into RTC_FAST memory and map it to coredump
#define COREDUMP_RTC_FAST_ATTR _SECTION_ATTR_IMPL(".rtc.fast.coredump", __COUNTER__)
// Allows to place data into RTC_NOINIT memory and map it to coredump
#define COREDUMP_NOINIT_ATTR _SECTION_ATTR_IMPL(".rtc_noinit.coredump", __COUNTER__)
#else
// Allows to place data into NOINIT memory and map it to coredump
#define COREDUMP_NOINIT_ATTR _SECTION_ATTR_IMPL(".noinit.coredump", __COUNTER__)
#define RTC_DATA_ATTR
#define RTC_NOINIT_ATTR
#define RTC_RODATA_ATTR
@@ -37,6 +37,7 @@ typedef enum {
COREDUMP_MEMORY_RTC,
COREDUMP_MEMORY_RTC_FAST,
#endif
COREDUMP_MEMORY_NOINIT,
COREDUMP_MEMORY_MAX,
COREDUMP_MEMORY_START = COREDUMP_MEMORY_IRAM
} coredump_region_t;
+12
View File
@@ -6,6 +6,10 @@ entries:
entries:
.rtc.coredump+
[sections:rtc_noinit_coredump]
entries:
.rtc_noinit.coredump+
[sections:dram_coredump]
entries:
.dram2.coredump+
@@ -17,11 +21,17 @@ entries:
entries:
.iram2.coredump+
[sections:noinit_coredump]
entries:
.noinit.coredump+
[scheme:coredump_default]
entries:
dram_coredump -> dram0_data
rtc_coredump -> rtc_data
rtc_fast_coredump -> rtc_force_fast
rtc_noinit_coredump -> rtc_noinit
noinit_coredump -> noinit
iram_coredump -> iram0_data
[mapping:coredump_default]
@@ -30,6 +40,8 @@ entries:
* (coredump_default);
rtc_fast_coredump -> rtc_force_fast SURROUND(coredump_rtc_fast),
rtc_coredump -> rtc_data SURROUND(coredump_rtc),
rtc_noinit_coredump -> rtc_noinit SURROUND(coredump_rtc_noinit),
noinit_coredump -> noinit SURROUND(coredump_noinit),
dram_coredump -> dram0_data SURROUND(coredump_dram),
iram_coredump -> iram0_data SURROUND(coredump_iram)
+12 -1
View File
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -54,6 +54,11 @@ extern int _coredump_rtc_start;
extern int _coredump_rtc_end;
extern int _coredump_rtc_fast_start;
extern int _coredump_rtc_fast_end;
extern int _coredump_rtc_noinit_start;
extern int _coredump_rtc_noinit_end;
#else
extern int _coredump_noinit_start;
extern int _coredump_noinit_end;
#endif
static void* s_exc_frame = NULL;
@@ -253,6 +258,9 @@ uint32_t esp_core_dump_get_user_ram_segments(void)
#if SOC_RTC_MEM_SUPPORTED
total_sz += COREDUMP_GET_MEMORY_SIZE(&_coredump_rtc_end, &_coredump_rtc_start) > 0 ? 1 : 0;
total_sz += COREDUMP_GET_MEMORY_SIZE(&_coredump_rtc_fast_end, &_coredump_rtc_fast_start) > 0 ? 1 : 0;
total_sz += COREDUMP_GET_MEMORY_SIZE(&_coredump_rtc_noinit_end, &_coredump_rtc_noinit_start) > 0 ? 1 : 0;
#else
total_sz += COREDUMP_GET_MEMORY_SIZE(&_coredump_noinit_end, &_coredump_noinit_start) > 0 ? 1 : 0;
#endif
total_sz += COREDUMP_GET_MEMORY_SIZE(&_coredump_iram_end, &_coredump_iram_start) > 0 ? 1 : 0;
@@ -280,6 +288,9 @@ static const struct {
#if SOC_RTC_MEM_SUPPORTED
[COREDUMP_MEMORY_RTC] = { &_coredump_rtc_start, &_coredump_rtc_end },
[COREDUMP_MEMORY_RTC_FAST] = { &_coredump_rtc_fast_start, &_coredump_rtc_fast_end },
[COREDUMP_MEMORY_NOINIT] = { &_coredump_rtc_noinit_start, &_coredump_rtc_noinit_end },
#else
[COREDUMP_MEMORY_NOINIT] = { &_coredump_noinit_start, &_coredump_noinit_end },
#endif
};