From 5343de3ba0745f5bc427ab7a4fc46aa0442400f9 Mon Sep 17 00:00:00 2001 From: vc4 <287920192@qq.com> Date: Wed, 8 May 2024 08:20:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=89=8B=E5=8A=A8=E5=A4=8D?= =?UTF-8?q?=E4=BD=8D=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hc32flash.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/hc32flash.py b/hc32flash.py index c062c3e..3bcf2c3 100755 --- a/hc32flash.py +++ b/hc32flash.py @@ -229,7 +229,7 @@ class SerialTransport(): self.serial.rts = True self.serial.dtr = True time.sleep(0.5) - self.write(b'\x18\xFF'*10, flush=False) + self.write(b'\x18\xFF'*100, flush=False) self.serial.rts = False self.serial.dtr = False self.write(b'\x18\xFF'*10, flush=False) @@ -242,6 +242,17 @@ class SerialTransport(): return True return False + def wait_bootloader(self): + for x in range(10): + self.write(b'\x18\xFF'*50, flush=False) + time.sleep(0.1) + if self.serial.in_waiting: + ack = self.read(self.serial.in_waiting) + if ack[-3:] == b'\x11'*3: + self.serial.flushInput() + return True + return False + def check_lock(self): self.write(b'\x01\xFC\x0B\x00\x00\x02\x00\x00\x00\x0A') ack = self.read(5) @@ -382,8 +393,19 @@ if __name__ == '__main__': sys.stdout.write("Stage 1. Goto bootloader: ") sys.stdout.flush() _err = 0 + if not args.goboot: # 需手动进入复位 + sys.stdout.write("wait press reset key ") + sys.stdout.flush() + while not transport.wait_bootloader(): + sys.stdout.write(".") + sys.stdout.flush() + _err += 1 + if _err > 30: # 等待最多30s + sys.stdout.write("error\n") + sys.exit(1) + # 使用控制脚自动进入复位 while not transport.goto_bootloader(): - sys.stdout.write(".") + sys.stdout.write("+") sys.stdout.flush() _err += 1 if _err > (args.goboot and 30 or 0):