From 38f5e041adbe1cd790a2cb29ae4cf3d0f1219587 Mon Sep 17 00:00:00 2001 From: Benjamin Koch <bbbsnowball@gmail.com> Date: Fri, 9 Jun 2023 22:14:09 +0200 Subject: [PATCH] add option to download flash to Python script --- .../rust1/download_firmware_via_modbus.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/firmware/rust1/download_firmware_via_modbus.py b/firmware/rust1/download_firmware_via_modbus.py index f858e1e..56b3d86 100644 --- a/firmware/rust1/download_firmware_via_modbus.py +++ b/firmware/rust1/download_firmware_via_modbus.py @@ -87,6 +87,27 @@ def main(): if x.registers != [0, 1, 0, 1]: raise Exception("We haven't implemented re-sending blocks, yet.") + if False: + with open("flash-read.bin", "wb") as f: + block_size = 32768 + for offset in range(0, 2*1024*1024, block_size): + x = client.write_registers(3, offset//512, slave=DEVICE_ADDR) + logger.info("set offset: %r" % x) + + read_size = 200 + for offset2 in range(0, block_size, read_size): + r = FileRecord(file_number=1, record_number=offset2//2, record_length=min(read_size, block_size-offset2)//2) + x = client.read_file_record([ + r + ], slave=DEVICE_ADDR) + #logger.info("read: %r" % x) + #logger.info("read: %r, %r" % (x.records[0], r)) + #logger.info("read: %r" % x.records[0].record_data) + data = x.records[0].record_data + assert(len(data) == r.record_length*2) + assert(f.tell() == offset+offset2) + f.write(data) + x = client.write_registers(1, struct.unpack(">H", b"UP")[0], slave=DEVICE_ADDR) logger.info("write to mark for update: %s", x) -- GitLab