From 3771df20931985d1bef10c38a8477d98a4d5f927 Mon Sep 17 00:00:00 2001 From: zhji Date: Mon, 2 Jun 2025 12:58:25 +0800 Subject: [PATCH] [update] use 750Kbps as download speed and add shakehand before download --- tools/flash_download.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/flash_download.py b/tools/flash_download.py index 543f4f1..12d8192 100644 --- a/tools/flash_download.py +++ b/tools/flash_download.py @@ -9,7 +9,7 @@ from pathlib import Path class FlashDownloader: def __init__(self): self.port = None - self.baudrate = 2000000 # 默认2Mbps + self.baudrate = 750000 # 默认750Kbps self.filename = None self.address = 0x00010000 # 默认地址 self.check = False @@ -18,7 +18,7 @@ class FlashDownloader: def parse_arguments(self): parser = argparse.ArgumentParser(description='UART Flash Downloader') parser.add_argument('--COMX', required=True, help='COM port (e.g. COM3)') - parser.add_argument('--BAUDRATE', type=int, help='Baud rate (default: 2000000)') + parser.add_argument('--BAUDRATE', type=int, help='Baud rate (default: 750000)') parser.add_argument('--file', help='File to download') parser.add_argument('--ADDR', type=lambda x: int(x, 0), help='Download address (hex/dec)') parser.add_argument('--CHECK', action='store_true', help='Enable readback verification') @@ -64,8 +64,11 @@ class FlashDownloader: self.ser.dtr = False # DTR拉高 time.sleep(0.1) # 等待100ms self.ser.rts = False # RTS拉高 - time.sleep(0.1) # 等待100ms + # time.sleep(0.5) # 等待500ms print("Pre-erase signals set") + shakehand = self.ser.read(4) + print("shakehand=", shakehand) + return shakehand == b'\x55\x55\x55\x55' def control_signals_post_download(self): """下载完成后的信号控制""" @@ -236,7 +239,9 @@ class FlashDownloader: print(f"Preparing to download {len(file_data)} bytes from {self.filename} to 0x{self.address:08X}") # 擦除前的信号控制 - self.control_signals_pre_erase() + if not self.control_signals_pre_erase(): + print("shake hands failed") + sys.exit(1) # 擦除Flash (擦除足够的空间) erase_size = ((len(file_data) + 4095) // 4096) * 4096 # 假设擦除块大小为4KB