soc/tools/remote: small cleanup and remove csr_data_width from server side

This commit is contained in:
Florent Kermarrec 2015-11-17 11:11:50 +01:00
parent 71483b8935
commit d6fdd76930
3 changed files with 17 additions and 24 deletions

View File

@ -25,10 +25,11 @@ class RemoteClient(EtherboneIPC, CSRBuilder):
self.socket.close()
del self.socket
def read(self, addr, length=1):
def read(self, addr, length=None):
length_int = 1 if length is None else length
# prepare packet
record = EtherboneRecord()
record.reads = EtherboneReads(addrs=[addr + 4*j for j in range(length)])
record.reads = EtherboneReads(addrs=[addr + 4*j for j in range(length_int)])
record.rcount = len(record.reads)
# send packet
@ -44,14 +45,10 @@ class RemoteClient(EtherboneIPC, CSRBuilder):
if self.debug:
for i, data in enumerate(datas):
print("read {:08x} @ {:08x}".format(data, addr + 4*i))
if length == 1:
return datas[0]
else:
return datas
return datas[0] if length is None else datas
def write(self, addr, datas):
if not isinstance(datas, list):
datas = [datas]
datas = datas if isinstance(datas, list) else [datas]
record = EtherboneRecord()
record.writes = EtherboneWrites(base_addr=addr, datas=[d for d in datas])
record.wcount = len(record.writes)

View File

@ -10,12 +10,10 @@ class CommUART:
def __init__(self, port, baudrate=115200, debug=False):
self.port = port
self.baudrate = str(baudrate)
self.csr_data_width = None
self.debug = debug
self.port = serial.serial_for_url(port, baudrate)
def open(self, csr_data_width):
self.csr_data_width = csr_data_width
def open(self):
if hasattr(self, "port"):
return
self.port.open()
@ -40,25 +38,25 @@ class CommUART:
pos += written
def read(self, addr, length=None):
r = []
data = []
length_int = 1 if length is None else length
self._write([self.msg_type["read"], length_int])
self._write(list((addr//4).to_bytes(4, byteorder="big")))
for i in range(length_int):
data = int.from_bytes(self._read(4), "big")
value = int.from_bytes(self._read(4), "big")
if self.debug:
print("read {:08x} @ {:08x}".format(data, addr + 4*i))
if length is None:
return data
r.append(data)
return r
return value
data.append(value)
return data
def write(self, addr, data):
data = data if isinstance(data, list) else [data]
length = len(data)
self._write([self.msg_type["write"], length])
self._write(list((addr//4).to_bytes(4, byteorder="big")))
for i in range(len(data)):
self._write(list(data[i].to_bytes(4, byteorder="big")))
for i, value in enumerate(range(data)):
self._write(list(value.to_bytes(4, byteorder="big")))
if self.debug:
print("write {:08x} @ {:08x}".format(data[i], addr + 4*i))
print("write {:08x} @ {:08x}".format(value, addr + 4*i))

View File

@ -7,10 +7,9 @@ from litex.soc.tools.remote.etherbone import EtherboneIPC
class RemoteServer(EtherboneIPC):
def __init__(self, comm, port=1234, csr_data_width=32):
def __init__(self, comm, port=1234):
self.comm = comm
self.port = port
self.csr_data_width = 32
def open(self):
if hasattr(self, "socket"):
@ -18,7 +17,7 @@ class RemoteServer(EtherboneIPC):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.bind(("localhost", self.port))
self.socket.listen(1)
self.comm.open(self.csr_data_width)
self.comm.open()
def close(self):
self.comm.close()
@ -78,7 +77,6 @@ def _get_args():
parser.add_argument("--comm", default="uart", help="comm interface")
parser.add_argument("--port", default="2", help="UART port")
parser.add_argument("--baudrate", default=115200, help="UART baudrate")
parser.add_argument("--csr_data_width", default=32, help="CSR data_width")
return parser.parse_args()
def main():
@ -92,7 +90,7 @@ def main():
else:
raise NotImplementedError
server = RemoteServer(comm, csr_data_width=args.csr_data_width)
server = RemoteServer(comm)
server.open()
server.start()
try: