From 5afabf7bfb206c5bf4120bf69d741ee4b13b97ad Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 31 Oct 2021 21:41:05 +1100 Subject: [PATCH] HAL_CbibiOS: get crash dump info for main thread lockups --- libraries/AP_HAL_ChibiOS/Scheduler.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libraries/AP_HAL_ChibiOS/Scheduler.cpp b/libraries/AP_HAL_ChibiOS/Scheduler.cpp index 60d134581c..63f44a09e2 100644 --- a/libraries/AP_HAL_ChibiOS/Scheduler.cpp +++ b/libraries/AP_HAL_ChibiOS/Scheduler.cpp @@ -443,6 +443,17 @@ void Scheduler::_monitor_thread(void *arg) INTERNAL_ERROR(AP_InternalError::error_t::main_loop_stuck); } +#if AP_CRASHDUMP_ENABLED + if (loop_delay >= 1800 && using_watchdog) { + // we are about to watchdog, better to trigger a hardfault + // now and get a crash dump file + void *ptr = (void*)0xE000FFFF; + typedef void (*fptr)(); + fptr gptr = (fptr) (void *)ptr; + gptr(); + } +#endif + #if HAL_LOGGING_ENABLED if (log_wd_counter++ == 10 && hal.util->was_watchdog_reset()) { log_wd_counter = 0;