Преглед изворни кода

Merge branch 'bugfix/wdt_reset_info_for_cpu1_not_correct' into 'master'

bugfix:Fix bug that wdt reset information for CPU1 was not correct

See merge request !823

Jiang Jiang Jian пре 8 година
родитељ
комит
bb6189b335
2 измењених фајлова са 11 додато и 4 уклоњено
  1. 3 4
      components/bootloader/src/main/bootloader_start.c
  2. 8 0
      components/esp32/cpu_start.c

+ 3 - 4
components/bootloader/src/main/bootloader_start.c

@@ -766,12 +766,11 @@ static void uart_console_configure(void)
 #endif // CONFIG_CONSOLE_UART_NONE
 }
 
-static void wdt_reset_info_enable(void)
+static void wdt_reset_cpu0_info_enable(void)
 {
+    //We do not reset core1 info here because it didn't work before cpu1 was up. So we put it into call_start_cpu1.
     DPORT_REG_SET_BIT(DPORT_PRO_CPU_RECORD_CTRL_REG, DPORT_PRO_CPU_PDEBUG_ENABLE | DPORT_PRO_CPU_RECORD_ENABLE);
     DPORT_REG_CLR_BIT(DPORT_PRO_CPU_RECORD_CTRL_REG, DPORT_PRO_CPU_RECORD_ENABLE);
-    DPORT_REG_SET_BIT(DPORT_APP_CPU_RECORD_CTRL_REG, DPORT_APP_CPU_PDEBUG_ENABLE | DPORT_APP_CPU_RECORD_ENABLE);
-    DPORT_REG_CLR_BIT(DPORT_APP_CPU_RECORD_CTRL_REG, DPORT_APP_CPU_RECORD_ENABLE);
 }
 
 static void wdt_reset_info_dump(int cpu)
@@ -841,5 +840,5 @@ static void wdt_reset_check(void)
         wdt_reset_info_dump(0);
         wdt_reset_info_dump(1);
     }
-    wdt_reset_info_enable();
+    wdt_reset_cpu0_info_enable();
 }

+ 8 - 0
components/esp32/cpu_start.c

@@ -170,6 +170,13 @@ void IRAM_ATTR call_start_cpu0()
 }
 
 #if !CONFIG_FREERTOS_UNICORE
+
+static void wdt_reset_cpu1_info_enable(void)
+{
+    DPORT_REG_SET_BIT(DPORT_APP_CPU_RECORD_CTRL_REG, DPORT_APP_CPU_PDEBUG_ENABLE | DPORT_APP_CPU_RECORD_ENABLE);
+    DPORT_REG_CLR_BIT(DPORT_APP_CPU_RECORD_CTRL_REG, DPORT_APP_CPU_RECORD_ENABLE);
+}
+
 void IRAM_ATTR call_start_cpu1()
 {
     asm volatile (\
@@ -188,6 +195,7 @@ void IRAM_ATTR call_start_cpu1()
     uart_tx_switch(CONFIG_CONSOLE_UART_NUM);
 #endif
 
+    wdt_reset_cpu1_info_enable();
     ESP_EARLY_LOGI(TAG, "App cpu up.");
     app_cpu_started = 1;
     start_cpu1();