]> granicus.if.org Git - esp-idf/commitdiff
Fix panic config ifdefs, un-stall app cpu on boot so it restarts after panic
authorJeroen Domburg <git@j0h.nl>
Thu, 27 Oct 2016 03:17:24 +0000 (11:17 +0800)
committerJeroen Domburg <git@j0h.nl>
Thu, 27 Oct 2016 03:17:24 +0000 (11:17 +0800)
components/esp32/cpu_start.c
components/esp32/panic.c

index 37205dcd9acb1782e311b31452d0178314431bcf..a649764ab554be1ad39b71a382e3d2fb189299b2 100644 (file)
@@ -102,6 +102,10 @@ void IRAM_ATTR call_start_cpu0()
 #if !CONFIG_FREERTOS_UNICORE
     ESP_EARLY_LOGI(TAG, "Starting app cpu, entry point is %p", call_start_cpu1);
 
+    //Un-stall the app cpu; the panic handler may have stalled it.
+    CLEAR_PERI_REG_MASK(RTC_CNTL_SW_CPU_STALL_REG, RTC_CNTL_SW_STALL_APPCPU_C1_M);
+    CLEAR_PERI_REG_MASK(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_SW_STALL_APPCPU_C0_M);
+    //Enable clock gating and reset the app cpu.
     SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_B_REG, DPORT_APPCPU_CLKGATE_EN);
     CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
     SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
index 274364008b2ea904b81baf088adff25ea4838496..c806dace2a0d667527f95751730076f6427eb8c9 100644 (file)
@@ -38,7 +38,7 @@ task switching / interrupt code runs into an unrecoverable error. The default ta
 overflow handler also is in here.
 */
 
-#if !CONFIG_FREERTOS_PANIC_SILENT_REBOOT
+#if !CONFIG_ESP32_PANIC_SILENT_REBOOT
 //printf may be broken, so we fix our own printing fns...
 inline static void panicPutchar(char c) {
        while (((READ_PERI_REG(UART_STATUS_REG(0))>>UART_TXFIFO_CNT_S)&UART_TXFIFO_CNT)>=126) ;
@@ -123,7 +123,7 @@ static void haltOtherCore() {
 
 //Returns true when a debugger is attached using JTAG.
 static int inOCDMode() {
-#if CONFIG_FREERTOS_DEBUG_OCDAWARE
+#if CONFIG_ESP32_DEBUG_OCDAWARE
        int dcr;
        int reg=0x10200C; //DSRSET register
        asm("rer %0,%1":"=r"(dcr):"r"(reg));
@@ -218,6 +218,7 @@ static void reconfigureAllWdts() {
        TIMERG1.wdt_wprotect=0;
 }
 
+#if CONFIG_ESP32_PANIC_GDBSTUB || CONFIG_ESP32_PANIC_PRINT_HALT
 /*
 This disables all the watchdogs for when we call the gdbstub.
 */
@@ -230,6 +231,7 @@ static void disableAllWdts() {
        TIMERG0.wdt_wprotect=0;
 }
 
+#endif
 
 /*
 We arrive here after a panic or unhandled exception, when no OCD is detected. Dump the registers to the
@@ -259,11 +261,11 @@ void commonErrorHandler(XtExcFrame *frame) {
                }
                panicPutStr("\r\n");
        }
-#if CONFIG_FREERTOS_PANIC_GDBSTUB
+#if CONFIG_ESP32_PANIC_GDBSTUB
        disableAllWdts();
        panicPutStr("Entering gdb stub now.\r\n");
        esp_gdbstub_panic_handler(frame);
-#elif CONFIG_FREERTOS_PANIC_PRINT_REBOOT || CONFIG_FREERTOS_PANIC_SILENT_REBOOT
+#elif CONFIG_ESP32_PANIC_PRINT_REBOOT || CONFIG_ESP32_PANIC_SILENT_REBOOT
        panicPutStr("Rebooting...\r\n");
        for (x=0; x<100; x++) ets_delay_us(1000);
        software_reset();