tools/litex_term: use different payload_length/delay settings for USB-ACM.

This commit is contained in:
Florent Kermarrec 2020-12-04 19:59:28 +01:00
parent b7c0922ec1
commit bed072ef19
1 changed files with 12 additions and 5 deletions

View File

@ -58,7 +58,7 @@ sfl_prompt_ack = b"\x06"
sfl_magic_req = b"sL5DdSMmkekro\n" sfl_magic_req = b"sL5DdSMmkekro\n"
sfl_magic_ack = b"z6IHG7cYDID6o\n" sfl_magic_ack = b"z6IHG7cYDID6o\n"
sfl_payload_length = 64 # FIXME: Understand why 255 failing with USB-FIFO. sfl_payload_length = 255
sfl_outstanding = 128 sfl_outstanding = 128
# General commands # General commands
@ -165,6 +165,13 @@ class LiteXTerm:
def open(self, port, baudrate): def open(self, port, baudrate):
if hasattr(self, "port"): if hasattr(self, "port"):
return return
# FIXME: https://github.com/enjoy-digital/litex/issues/720
if "ttyACM" in port:
self.payload_length = sfl_payload_length
self.delay = 1e-4
else:
self.payload_length = 64
self.delay = 1e-5
self.port = serial.serial_for_url(port, baudrate) self.port = serial.serial_for_url(port, baudrate)
def close(self): def close(self):
@ -236,7 +243,7 @@ class LiteXTerm:
if outstanding <= sfl_outstanding: if outstanding <= sfl_outstanding:
# Prepare frame. # Prepare frame.
frame = SFLFrame() frame = SFLFrame()
frame_data = f.read(min(remaining, sfl_payload_length-4)) frame_data = f.read(min(remaining, self.payload_length-4))
if self.flash: if self.flash:
frame.cmd = sfl_cmd_flash frame.cmd = sfl_cmd_flash
else: else:
@ -253,11 +260,11 @@ class LiteXTerm:
remaining -= len(frame_data) remaining -= len(frame_data)
outstanding += 1 outstanding += 1
# Inter-frame delay for fast UARTs (ex: FT245). # Inter-frame delay.
time.sleep(1e-4) time.sleep(self.delay)
# Read response if availables. # Read response if availables.
if self.port.in_waiting: while self.port.in_waiting:
self.receive_upload_response() self.receive_upload_response()
outstanding -= 1 outstanding -= 1