mirror of
https://github.com/espressif/esptool.git
synced 2025-10-16 23:06:31 +08:00
fix: add delay after WDT reset for better stability
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import struct
|
||||
from time import sleep
|
||||
from typing import Dict
|
||||
|
||||
from .esp32 import ESP32ROM
|
||||
@@ -255,13 +256,14 @@ class ESP32C3ROM(ESP32ROM):
|
||||
def hard_reset(self):
|
||||
if self.uses_usb_jtag_serial():
|
||||
self.rtc_wdt_reset()
|
||||
sleep(0.5) # wait for reset to take effect
|
||||
else:
|
||||
ESPLoader.hard_reset(self)
|
||||
|
||||
def rtc_wdt_reset(self):
|
||||
print("Hard resetting with RTC WDT...")
|
||||
self.write_reg(self.RTC_CNTL_WDTWPROTECT_REG, self.RTC_CNTL_WDT_WKEY) # unlock
|
||||
self.write_reg(self.RTC_CNTL_WDTCONFIG1_REG, 5000) # set WDT timeout
|
||||
self.write_reg(self.RTC_CNTL_WDTCONFIG1_REG, 2000) # set WDT timeout
|
||||
self.write_reg(
|
||||
self.RTC_CNTL_WDTCONFIG0_REG, (1 << 31) | (5 << 28) | (1 << 8) | 2
|
||||
) # enable WDT
|
||||
|
@@ -4,6 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import struct
|
||||
from time import sleep
|
||||
from typing import Dict
|
||||
|
||||
from .esp32 import ESP32ROM
|
||||
@@ -264,7 +265,7 @@ class ESP32P4ROM(ESP32ROM):
|
||||
def rtc_wdt_reset(self):
|
||||
print("Hard resetting with RTC WDT...")
|
||||
self.write_reg(self.RTC_CNTL_WDTWPROTECT_REG, self.RTC_CNTL_WDT_WKEY) # unlock
|
||||
self.write_reg(self.RTC_CNTL_WDTCONFIG1_REG, 5000) # set WDT timeout
|
||||
self.write_reg(self.RTC_CNTL_WDTCONFIG1_REG, 2000) # set WDT timeout
|
||||
self.write_reg(
|
||||
self.RTC_CNTL_WDTCONFIG0_REG, (1 << 31) | (5 << 28) | (1 << 8) | 2
|
||||
) # enable WDT
|
||||
@@ -273,6 +274,7 @@ class ESP32P4ROM(ESP32ROM):
|
||||
def hard_reset(self):
|
||||
if self.uses_usb_jtag_serial() or self.uses_usb_otg():
|
||||
self.rtc_wdt_reset()
|
||||
sleep(0.5) # wait for reset to take effect
|
||||
else:
|
||||
ESPLoader.hard_reset(self)
|
||||
|
||||
|
@@ -4,6 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import struct
|
||||
from time import sleep
|
||||
from typing import Dict
|
||||
|
||||
from .esp32 import ESP32ROM
|
||||
@@ -290,7 +291,7 @@ class ESP32S2ROM(ESP32ROM):
|
||||
def rtc_wdt_reset(self):
|
||||
print("Hard resetting with RTC WDT...")
|
||||
self.write_reg(self.RTC_CNTL_WDTWPROTECT_REG, self.RTC_CNTL_WDT_WKEY) # unlock
|
||||
self.write_reg(self.RTC_CNTL_WDTCONFIG1_REG, 5000) # set WDT timeout
|
||||
self.write_reg(self.RTC_CNTL_WDTCONFIG1_REG, 2000) # set WDT timeout
|
||||
self.write_reg(
|
||||
self.RTC_CNTL_WDTCONFIG0_REG, (1 << 31) | (5 << 28) | (1 << 8) | 2
|
||||
) # enable WDT
|
||||
@@ -307,6 +308,7 @@ class ESP32S2ROM(ESP32ROM):
|
||||
and force_dl_reg & self.RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK == 0
|
||||
):
|
||||
self.rtc_wdt_reset()
|
||||
sleep(0.5) # wait for reset to take effect
|
||||
return
|
||||
|
||||
ESPLoader.hard_reset(self, uses_usb_otg)
|
||||
|
@@ -4,6 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import struct
|
||||
from time import sleep
|
||||
from typing import Dict
|
||||
|
||||
from .esp32 import ESP32ROM
|
||||
@@ -354,7 +355,7 @@ class ESP32S3ROM(ESP32ROM):
|
||||
def rtc_wdt_reset(self):
|
||||
print("Hard resetting with RTC WDT...")
|
||||
self.write_reg(self.RTC_CNTL_WDTWPROTECT_REG, self.RTC_CNTL_WDT_WKEY) # unlock
|
||||
self.write_reg(self.RTC_CNTL_WDTCONFIG1_REG, 5000) # set WDT timeout
|
||||
self.write_reg(self.RTC_CNTL_WDTCONFIG1_REG, 2000) # set WDT timeout
|
||||
self.write_reg(
|
||||
self.RTC_CNTL_WDTCONFIG0_REG, (1 << 31) | (5 << 28) | (1 << 8) | 2
|
||||
) # enable WDT
|
||||
@@ -380,6 +381,7 @@ class ESP32S3ROM(ESP32ROM):
|
||||
and force_dl_reg & self.RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK == 0
|
||||
):
|
||||
self.rtc_wdt_reset()
|
||||
sleep(0.5) # wait for reset to take effect
|
||||
return
|
||||
|
||||
ESPLoader.hard_reset(self, uses_usb_otg)
|
||||
|
Reference in New Issue
Block a user