[update] use 750Kbps as download speed and add shakehand before download

This commit is contained in:
zhji 2025-06-02 12:58:25 +08:00
parent 38dec013f8
commit 3771df2093

View File

@ -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