From dbf5c6fd588d60d8d6a13721a3c11ebba4433ceb Mon Sep 17 00:00:00 2001 From: Dmitry Date: Fri, 16 Jul 2021 23:37:54 +0300 Subject: [PATCH 1/2] Tools: Fix chip reset on IDF Monitor connection Closes https://github.com/espressif/esp-idf/issues/7190 --- tools/idf_monitor_base/serial_reader.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/tools/idf_monitor_base/serial_reader.py b/tools/idf_monitor_base/serial_reader.py index f6779e23a9..5608b5ad0d 100644 --- a/tools/idf_monitor_base/serial_reader.py +++ b/tools/idf_monitor_base/serial_reader.py @@ -50,21 +50,16 @@ class SerialReader(StoppableThread): self.serial.baudrate = self.baud # We can come to this thread at startup or from external application line GDB. # If we come from GDB we would like to continue to run without reset. - if self.gdb_exit: - self.serial.rts = False - self.serial.dtr = True - else: # if we exit from GDB, we don't need to reset the target - # This sequence of DTR/RTS and open/close set the serial port to - # condition when GDB not make reset of the target by switching DTR/RTS. - self.serial.rts = True # IO0=LOW - self.serial.dtr = self.serial.dtr # usbser.sys workaround - self.serial.rts = False # IO0=HIGH - self.serial.dtr = False + self.serial.dtr = True # Non reset state + self.serial.rts = False # IO0=HIGH # Current state not reset the target! - self.gdb_exit = False self.serial.open() - time.sleep(0.005) # Add a delay to meet the requirements of minimal EN low time (2ms for ESP32-C3) + if self.gdb_exit == False: + self.serial.dtr = False # Set dtr to reset state (affected by rts) + self.serial.rts = True # Set rts/dtr to the reset state + time.sleep(0.005) # Add a delay to meet the requirements of minimal EN low time (2ms for ESP32-C3) + self.gdb_exit = False self.serial.rts = False # Set rts/dtr to the working state self.serial.dtr = self.serial.dtr # usbser.sys workaround try: From 31f45f7200edd93da999700fa621624bb57d65a8 Mon Sep 17 00:00:00 2001 From: Roland Dobai Date: Mon, 19 Jul 2021 14:56:43 +0200 Subject: [PATCH 2/2] Tools: Fix chip reset on IDF Monitor connection Closes https://github.com/espressif/esp-idf/issues/7190 --- tools/idf_monitor_base/serial_reader.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/idf_monitor_base/serial_reader.py b/tools/idf_monitor_base/serial_reader.py index 5608b5ad0d..d704acf8e6 100644 --- a/tools/idf_monitor_base/serial_reader.py +++ b/tools/idf_monitor_base/serial_reader.py @@ -53,11 +53,13 @@ class SerialReader(StoppableThread): self.serial.dtr = True # Non reset state self.serial.rts = False # IO0=HIGH + self.serial.dtr = self.serial.dtr # usbser.sys workaround # Current state not reset the target! self.serial.open() - if self.gdb_exit == False: + if not self.gdb_exit: self.serial.dtr = False # Set dtr to reset state (affected by rts) self.serial.rts = True # Set rts/dtr to the reset state + self.serial.dtr = self.serial.dtr # usbser.sys workaround time.sleep(0.005) # Add a delay to meet the requirements of minimal EN low time (2ms for ESP32-C3) self.gdb_exit = False self.serial.rts = False # Set rts/dtr to the working state