6#include <hardware/watchdog.h>
7#if defined(PICO_RP2350)
8#include <hardware/structs/powman.h>
10#include <hardware/structs/vreg_and_chip_reset.h>
12#ifdef USE_RP2040_CRASH_HANDLER
17static const char *
const TAG =
"debug";
20 char *buf = buffer.data();
21 const size_t size = RESET_REASON_BUFFER_SIZE;
24#if defined(PICO_RP2350)
25 uint32_t chip_reset = powman_hw->chip_reset;
26 if (chip_reset & 0x04000000)
28 if (chip_reset & 0x00040000)
30 if (chip_reset & 0x00020000)
32 if (chip_reset & 0x00010000)
35 uint32_t chip_reset = vreg_and_chip_reset_hw->chip_reset;
36 if (chip_reset & 0x00010000)
38 if (chip_reset & 0x00000100)
42 if (watchdog_caused_reboot()) {
44#ifdef USE_RP2040_CRASH_HANDLER
51 if (watchdog_enable_caused_reboot()) {
60 if (
pos > 0 && buf[
pos - 1] ==
'|') {
62 }
else if (
pos == 0) {
74 constexpr size_t size = DEVICE_INFO_BUFFER_SIZE;
75 char *buf = buffer.data();
77 uint32_t cpu_freq = ::rp2040.f_cpu();
78 ESP_LOGD(TAG,
"CPU Frequency: %" PRIu32, cpu_freq);
79 pos = buf_append_printf(buf,
size,
pos,
"|CPU Frequency: %" PRIu32, cpu_freq);
const char * get_wakeup_cause_(std::span< char, WAKEUP_CAUSE_BUFFER_SIZE > buffer)
size_t get_device_info_(std::span< char, DEVICE_INFO_BUFFER_SIZE > buffer, size_t pos)
uint32_t get_free_heap_()
const char * get_reset_reason_(std::span< char, RESET_REASON_BUFFER_SIZE > buffer)
bool crash_handler_has_data()
Returns true if crash data was found this boot.
size_t buf_append_str(char *buf, size_t size, size_t pos, const char *str)
Safely append a string to buffer, returning new position (capped at size).