import struct, zlib blocks = [] last_off = 0x10000000 def add_block(data, offset): global last_off if last_off != offset: for i in range((offset - last_off) // 256): blocks.append((b"\xFF" * 256, last_off + i * 256)) assert len(data) == 256 blocks.append((data, offset)) last_off = offset + 256 def get_uf2(): total_blocks = len(blocks) result = b"" for n, b in enumerate(blocks): uf2 = struct.pack("