From: Florent Kermarrec Date: Mon, 23 Feb 2015 17:53:59 +0000 (+0100) Subject: add read grouping to etherbone, we now have interesting upload speeds... :) X-Git-Tag: 24jan2021_ls180~2575^2~1 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b6ebcece953a832c23a597ce7d6b639d41e90246;p=litex.git add read grouping to etherbone, we now have interesting upload speeds... :) --- diff --git a/litescope/host/driver/etherbone.py b/litescope/host/driver/etherbone.py index 02297dde..12a58bc3 100644 --- a/litescope/host/driver/etherbone.py +++ b/litescope/host/driver/etherbone.py @@ -21,8 +21,12 @@ class LiteScopeEtherboneDriver: def close(self): pass - def read(self, addr, burst_length=1): - reads_addrs = [addr+4*j for j in range(burst_length)] + def read(self, addr, burst_length=None, repeats=None): + def to_int(v): + return 1 if v is None else v + reads_addrs = [] + for i in range(to_int(repeats)): + reads_addrs += [addr+4*j for j in range(to_int(burst_length))] reads = EtherboneReads(base_ret_addr=0x1000, addrs=reads_addrs) record = EtherboneRecord() record.writes = None @@ -45,14 +49,11 @@ class LiteScopeEtherboneDriver: datas, addrs = self.rx_sock.recvfrom(8192) packet = EtherbonePacket(datas) packet.decode() - values = packet.records.pop().writes.get_datas() + datas = packet.records.pop().writes.get_datas() if self.debug: - for i, val in enumerate(values): - print("RD %08X @ %08X" %(val, addr + 4*i)) - if burst_length == 1: - return values[0] - else: - return values + for i, data in enumerate(datas): + print("RD %08X @ %08X" %(data, addr + 4*(i%to_int(burst_length)))) + return datas def write(self, addr, datas): if not isinstance(datas, list):