ESPHome 2026.9.1
Loading...
Searching...
No Matches
crash_handler.cpp File Reference

Go to the source code of this file.

Namespaces

namespace  esphome
 
namespace  esphome::rp2
 

Functions

bool esphome::rp2::crash_handler_has_data ()
 Returns true if crash data was found this boot, reading it first if needed.
 
void esphome::rp2::crash_handler_read_and_clear ()
 Read crash data from watchdog scratch registers and clear them.
 
void esphome::rp2::crash_handler_log ()
 Log crash data if a crash was detected on previous boot.
 
 if (!is_valid_sram_ptr(frame))
 
 for (uint32_t *p=scan_start;p< stack_top &&p< scan_start+64 &&bt_count< MAX_BACKTRACE;p++)
 
 while (true)
 
void __attribute__ ((naked, used)) isr_hardfault()
 

Variables

static void uint32_t
 
uint32_t extra_align = (frame[EF_XPSR] & (1u << 9)) ? 1 : 0
 
uint32_t * post_frame = frame + 8 + extra_align
 
uint32_t pre_fault_sp = reinterpret_cast<uintptr_t>(post_frame)
 
watchdog_hw scratch [0] = CRASH_MAGIC_V1
 
uint32_t * scan_start = post_frame
 
uint32_t * stack_top = reinterpret_cast<uint32_t *>(SRAM_END)
 
uint32_t bt_count = 0
 

Function Documentation

◆ __attribute__()

void __attribute__ ( (naked, used) )

Definition at line 232 of file crash_handler.cpp.

◆ for()

for ( )

Definition at line 199 of file crash_handler.cpp.

◆ if()

if ( ! is_valid_sram_ptrframe)

Definition at line 161 of file crash_handler.cpp.

◆ while()

while ( true )

Definition at line 213 of file crash_handler.cpp.

Variable Documentation

◆ bt_count

uint32_t bt_count = 0

Definition at line 197 of file crash_handler.cpp.

◆ extra_align

uint32_t extra_align = (frame[EF_XPSR] & (1u << 9)) ? 1 : 0

Definition at line 179 of file crash_handler.cpp.

◆ post_frame

uint32_t* post_frame = frame + 8 + extra_align

Definition at line 180 of file crash_handler.cpp.

◆ pre_fault_sp

uint32_t pre_fault_sp = reinterpret_cast<uintptr_t>(post_frame)

Definition at line 181 of file crash_handler.cpp.

◆ scan_start

uint32_t* scan_start = post_frame

Definition at line 192 of file crash_handler.cpp.

◆ scratch

watchdog_hw scratch = CRASH_MAGIC_V1

Definition at line 184 of file crash_handler.cpp.

◆ stack_top

uint32_t* stack_top = reinterpret_cast<uint32_t *>(SRAM_END)

Definition at line 194 of file crash_handler.cpp.

◆ uint32_t

void uint32_t
Initial value:
{
watchdog_reboot(0, 0, 10)

Definition at line 153 of file crash_handler.cpp.