diff --git a/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp b/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp index 73367683a..32b4aecd3 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp @@ -290,8 +290,8 @@ uint32_t EspClass::getFlashChipSizeByChipId(void) { String EspClass::getResetInfo(void) { if(resetInfo.reason != 0) { - char buff[150]; - sprintf(&buff[0], "Fatal exception:%d flag:%d epc1:0x%08x epc2:0x%08x epc3:0x%08x excvaddr:0x%08x depc:0x%08x", resetInfo.exccause, resetInfo.reason, resetInfo.epc1, resetInfo.epc2, resetInfo.epc3, resetInfo.excvaddr, resetInfo.depc); + char buff[200]; + sprintf(&buff[0], "Fatal exception:%d flag:%d (%s) epc1:0x%08x epc2:0x%08x epc3:0x%08x excvaddr:0x%08x depc:0x%08x", resetInfo.exccause, resetInfo.reason, (resetInfo.reason == 0 ? "DEFAULT" : resetInfo.reason == 1 ? "WDT" : resetInfo.reason == 2 ? "EXCEPTION" : resetInfo.reason == 3 ? "SOFT_WDT" : resetInfo.reason == 4 ? "SOFT_RESTART" : resetInfo.reason == 5 ? "DEEP_SLEEP_AWAKE" : "???"), resetInfo.epc1, resetInfo.epc2, resetInfo.epc3, resetInfo.excvaddr, resetInfo.depc); return String(buff); } return String("flag: 0"); diff --git a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp index 3423d70a1..350567906 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp @@ -126,19 +126,18 @@ void user_rf_pre_init() { extern "C" { void user_init(void) { - uart_div_modify(0, UART_CLK_FREQ / (74480)); + struct rst_info *rtc_info_ptr = system_get_rst_info(); - struct rst_info *rtc_info = system_get_rst_info(); - os_printf("Last reset reason: 0x%02X\n", rtc_info->reason); + memcpy((void *) &resetInfo, (void *) rtc_info_ptr, sizeof(resetInfo)); - if (rtc_info->reason == REASON_WDT_RST || - rtc_info->reason == REASON_EXCEPTION_RST || - rtc_info->reason == REASON_SOFT_WDT_RST) { - if (rtc_info->reason == REASON_EXCEPTION_RST) { - os_printf("Fatal exception (%d):\n", rtc_info->exccause); + os_printf("Last reset reason: 0x%02X\n", resetInfo.reason); + + + if(resetInfo.reason == REASON_WDT_RST || resetInfo.reason == REASON_EXCEPTION_RST || resetInfo.reason == REASON_SOFT_WDT_RST) { + if(resetInfo.reason == REASON_EXCEPTION_RST) { + os_printf("Fatal exception (%d):\n", resetInfo.exccause); } - os_printf("epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x\n", - rtc_info->epc1, rtc_info->epc2, rtc_info->epc3, rtc_info->excvaddr, rtc_info->depc); + os_printf("epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x\n", resetInfo.epc1, resetInfo.epc2, resetInfo.epc3, resetInfo.excvaddr, resetInfo.depc); } uart_div_modify(0, UART_CLK_FREQ / (115200));