""" Verify patched instruction and constant inside a UF2 file. Checks: - 0x10000410: should be 26 7a b4 ee (vsub.f32 s14, s14, s11) - 0x10000414: should be a6 7a b4 ee (vsub.f32 s15, s15, s11) - 0x1000042C: should be 00 00 00 41 (float 8.0) Usage: python verify_uf2.py build/hacked.uf2 """ import sys import struct UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" UF2_MAGIC_START1 = 0x9E5D5157 UF2_MAGIC_END = 0x0AB16F30 def load_uf2(path): blocks = [] with open(path, "rb") as f: data = f.read() i = 0 while i + 512 <= len(data): blk = data[i:i+512] (m0, m1, flags, tgt_addr, payload_size, block_no, num_blocks, file_size) = struct.unpack("") sys.exit(1) uf2_path = sys.argv[1] blocks = load_uf2(uf2_path) addrs = [0x10000410, 0x10000414, 0x1000042C] labels = ["@10000410", "@10000414", "@1000042C"] for label, a in zip(labels, addrs): bytes_ = read_at(blocks, a, 4) print(f"{label}: {bytes_.hex()} ", end="") if a == 0x1000042C: try: print(f"(float {struct.unpack('