blob: a81b2d0c275a6c0c6ea6bd6e21e177bbf24f1690 [file] [log] [blame]
Damien George075d5972014-11-27 20:30:33 +00001import sys
Paul Sokolovskya6213332016-08-04 00:19:09 +03002import struct
Paul Sokolovskybf47b712016-08-04 00:21:05 +03003import hashlib
Damien George075d5972014-11-27 20:30:33 +00004
Paul Sokolovsky8d2bcaf2016-04-03 15:40:53 +03005SEGS_MAX_SIZE = 0x9000
6
Damien George075d5972014-11-27 20:30:33 +00007assert len(sys.argv) == 4
8
Paul Sokolovskybf47b712016-08-04 00:21:05 +03009md5 = hashlib.md5()
10
Damien George69661f32020-02-27 15:36:53 +110011with open(sys.argv[3], "wb") as fout:
Damien George075d5972014-11-27 20:30:33 +000012
Damien George69661f32020-02-27 15:36:53 +110013 with open(sys.argv[1], "rb") as f:
Damien George075d5972014-11-27 20:30:33 +000014 data_flash = f.read()
15 fout.write(data_flash)
Paul Sokolovskybf47b712016-08-04 00:21:05 +030016 # First 4 bytes include flash size, etc. which may be changed
17 # by esptool.py, etc.
18 md5.update(data_flash[4:])
Damien George69661f32020-02-27 15:36:53 +110019 print("flash ", len(data_flash))
Damien George075d5972014-11-27 20:30:33 +000020
Damien George69661f32020-02-27 15:36:53 +110021 with open(sys.argv[2], "rb") as f:
Damien George075d5972014-11-27 20:30:33 +000022 data_rom = f.read()
Paul Sokolovskya6213332016-08-04 00:19:09 +030023
Damien George69661f32020-02-27 15:36:53 +110024 pad = b"\xff" * (SEGS_MAX_SIZE - len(data_flash))
Paul Sokolovskya6213332016-08-04 00:19:09 +030025 assert len(pad) >= 4
26 fout.write(pad[:-4])
Paul Sokolovskybf47b712016-08-04 00:21:05 +030027 md5.update(pad[:-4])
28 len_data = struct.pack("I", SEGS_MAX_SIZE + len(data_rom))
29 fout.write(len_data)
30 md5.update(len_data)
Damien George69661f32020-02-27 15:36:53 +110031 print("padding ", len(pad))
Paul Sokolovskya6213332016-08-04 00:19:09 +030032
33 fout.write(data_rom)
Paul Sokolovskybf47b712016-08-04 00:21:05 +030034 md5.update(data_rom)
Damien George69661f32020-02-27 15:36:53 +110035 print("irom0text", len(data_rom))
Damien George075d5972014-11-27 20:30:33 +000036
Paul Sokolovskybf47b712016-08-04 00:21:05 +030037 fout.write(md5.digest())
38
Damien George69661f32020-02-27 15:36:53 +110039 print("total ", SEGS_MAX_SIZE + len(data_rom))
40 print("md5 ", md5.hexdigest())