dd8c6c064c
Instead of having to guess the PC where the SP was sampled, always take both. This allows "seamless" stack decoding for both serial and xflash dumps, since we don't have to guess which function generated the dump. Make the core functions (doing the sampling) be ``noinline`` as well, so that they always have valid frame.
23 lines
578 B
C
23 lines
578 B
C
// XFLASH dumper
|
|
#pragma once
|
|
#include "xflash_layout.h"
|
|
|
|
enum class dump_crash_reason : uint8_t
|
|
{
|
|
manual = 0,
|
|
stack_error,
|
|
watchdog,
|
|
bad_isr,
|
|
};
|
|
|
|
#ifdef XFLASH_DUMP
|
|
void xfdump_reset(); // reset XFLASH dump state
|
|
void xfdump_dump(); // create a new SRAM memory dump
|
|
|
|
// return true if a dump is present, save type in "reason" if provided
|
|
bool xfdump_check_state(dump_crash_reason* reason = NULL);
|
|
|
|
// create a new dump containing registers and SRAM, then reset
|
|
void xfdump_full_dump_and_reset(dump_crash_reason crash = dump_crash_reason::manual);
|
|
#endif
|