Просмотр исходного кода

Merge branch 'feature/wifi_lib_update' into 'master'

bugfix: reboot halt and deep sleep crash

1. Fix reboot halt bug, TW7355
2. Fix system crash when calling system_deep_sleep(), TW7356

See merge request !104

Wu Jian Gang 9 лет назад
Родитель
Сommit
31f74b8008
3 измененных файлов с 14 добавлено и 3 удалено
  1. 12 1
      components/esp32/cpu_freq.c
  2. 1 1
      components/esp32/include/soc/cpu.h
  3. 1 1
      components/esp32/lib

+ 12 - 1
components/esp32/cpu_freq.c

@@ -14,6 +14,7 @@
 
 #include <stdint.h>
 #include "rom/ets_sys.h"
+#include "rom/uart.h"
 #include "sdkconfig.h"
 
 typedef enum{
@@ -42,10 +43,15 @@ extern void rtc_set_cpu_freq(xtal_freq_t xtal_freq, cpu_freq_t cpu_freq);
  * components which want to be notified of CPU frequency
  * changes.
  */
-void esp_set_cpu_freq()
+void esp_set_cpu_freq(void)
 {
     uint32_t freq_mhz = CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ;
     phy_get_romfunc_addr();
+
+    // freq will be changed to 40MHz in rtc_init_lite,
+    // wait uart tx finish, otherwise some uart output will be lost
+    uart_tx_wait_idle(0);
+
     rtc_init_lite();
     cpu_freq_t freq = CPU_80M;
     switch(freq_mhz) {
@@ -62,6 +68,11 @@ void esp_set_cpu_freq()
             freq = CPU_80M;
             break;
     }
+
+    // freq will be changed to freq in rtc_set_cpu_freq,
+    // wait uart tx finish, otherwise some uart output will be lost
+    uart_tx_wait_idle(0);
+
     rtc_set_cpu_freq(XTAL_AUTO, freq);
     ets_update_cpu_frequency(freq_mhz);
 }

+ 1 - 1
components/esp32/include/soc/cpu.h

@@ -76,6 +76,6 @@ static inline void cpu_configure_region_protection()
  * This is a temporary function which will be replaced once dynamic
  * CPU frequency changing is implemented.
  */
-void esp_set_cpu_freq();
+void esp_set_cpu_freq(void);
 
 #endif

+ 1 - 1
components/esp32/lib

@@ -1 +1 @@
-Subproject commit 9403d944b6cfe682025e2ed9eef7e5d0841c6592
+Subproject commit 9f26b9a190e6a6ca42656685df9287253badfa46