Răsfoiți Sursa

bootloader: provide implementation of `abort`

ROM definition of `abort` was removed in 9240bbb. The old definition
resulted in a panic due to a jump to a null pointer (abort member in
ROM stub table was zero). The new definition triggers a debug
exception if JTAG is connected, or goes into an infinite loop to be
reset by the WDT.
Ivan Grokhotkov 7 ani în urmă
părinte
comite
a1f809fcc5
1 a modificat fișierele cu 11 adăugiri și 0 ștergeri
  1. 11 0
      components/bootloader_support/src/bootloader_init.c

+ 11 - 0
components/bootloader_support/src/bootloader_init.c

@@ -537,3 +537,14 @@ void __assert_func(const char *file, int line, const char *func, const char *exp
     ESP_LOGE(TAG, "Assert failed in %s, %s:%d (%s)", func, file, line, expr);
     while(1) {}
 }
+
+void abort()
+{
+#if !CONFIG_ESP32_PANIC_SILENT_REBOOT
+    ets_printf("abort() was called at PC 0x%08x\r\n", (intptr_t)__builtin_return_address(0) - 3);
+#endif
+    if (esp_cpu_in_ocd_debug_mode()) {
+        __asm__ ("break 0,0");
+    }
+    while(1) {}
+}