trezor-core/tools/combine_firmware

27 lines
480 B
Python
Executable File

#!/usr/bin/env python3
import sys
def pairwise(iterable):
a = iter(iterable)
return zip(a, a)
files = sys.argv[1:]
files = list(pairwise(files))
offset = int(files[0][0], 16)
out = bytearray()
for addr, fn in files:
addr = int(addr, 16) - offset
data = open(fn, 'rb').read()
if len(out) < addr:
out += b'\x00' * (addr - len(out))
if len(out) != addr:
raise Exception('Alignment failed')
out += data
sys.stdout.buffer.write(out)