mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
feat(coredump): add coredump_noinit attribute
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -51,6 +51,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;
|
||||
@@ -241,21 +246,6 @@ bool esp_core_dump_get_task_snapshot(void *handle, core_dump_task_header_t *task
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32_t esp_core_dump_get_user_ram_segments(void)
|
||||
{
|
||||
uint32_t total_sz = 0;
|
||||
|
||||
// count number of memory segments to insert into ELF structure
|
||||
total_sz += COREDUMP_GET_MEMORY_SIZE(&_coredump_dram_end, &_coredump_dram_start) > 0 ? 1 : 0;
|
||||
#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;
|
||||
#endif
|
||||
total_sz += COREDUMP_GET_MEMORY_SIZE(&_coredump_iram_end, &_coredump_iram_start) > 0 ? 1 : 0;
|
||||
|
||||
return total_sz;
|
||||
}
|
||||
|
||||
static const struct {
|
||||
int *start;
|
||||
int *end;
|
||||
@@ -277,6 +267,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
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user