From 0362b6484f6295a9a38dc4c6937b7c3c48af1a0c Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 10 Jun 2021 16:24:52 +0200 Subject: [PATCH] xfdump_full_dump_and_reset: set a guaranteed minimum WDT Just prior to dumping, reset the WDT to a known-safe (and not too long) interval that guarantees a complete dump. --- Firmware/xflash_dump.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Firmware/xflash_dump.cpp b/Firmware/xflash_dump.cpp index 99d92b550..66a851128 100644 --- a/Firmware/xflash_dump.cpp +++ b/Firmware/xflash_dump.cpp @@ -105,10 +105,14 @@ void xfdump_full_dump_and_reset(dump_crash_source crash) // disable interrupts for a cleaner register dump cli(); + // ensure there's always enough time (with some margin) to dump + // dump time on w25x20cl: ~150ms + wdt_enable(WDTO_500MS); + // write all addressable ranges (this will trash bidirectional registers) xfdump_dump_core(buf, DUMP_OFFSET + offsetof(dump_t, data), 0, RAMEND); - // force a reset soon + // force a reset even sooner softReset(); } #endif