diff --git a/firmware/rust1/download_firmware_via_modbus.py b/firmware/rust1/download_firmware_via_modbus.py index f858e1e6472f205c1519b71b8825e127f7af0c80..56b3d86f34d375ba4c78f2837a4339ce5b7ff5d0 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)