Damien George | 075d597 | 2014-11-27 20:30:33 +0000 | [diff] [blame] | 1 | import sys |
Paul Sokolovsky | a621333 | 2016-08-04 00:19:09 +0300 | [diff] [blame] | 2 | import struct |
Paul Sokolovsky | bf47b71 | 2016-08-04 00:21:05 +0300 | [diff] [blame] | 3 | import hashlib |
Damien George | 075d597 | 2014-11-27 20:30:33 +0000 | [diff] [blame] | 4 | |
Paul Sokolovsky | 8d2bcaf | 2016-04-03 15:40:53 +0300 | [diff] [blame] | 5 | SEGS_MAX_SIZE = 0x9000 |
| 6 | |
Damien George | 075d597 | 2014-11-27 20:30:33 +0000 | [diff] [blame] | 7 | assert len(sys.argv) == 4 |
| 8 | |
Paul Sokolovsky | bf47b71 | 2016-08-04 00:21:05 +0300 | [diff] [blame] | 9 | md5 = hashlib.md5() |
| 10 | |
Damien George | 69661f3 | 2020-02-27 15:36:53 +1100 | [diff] [blame^] | 11 | with open(sys.argv[3], "wb") as fout: |
Damien George | 075d597 | 2014-11-27 20:30:33 +0000 | [diff] [blame] | 12 | |
Damien George | 69661f3 | 2020-02-27 15:36:53 +1100 | [diff] [blame^] | 13 | with open(sys.argv[1], "rb") as f: |
Damien George | 075d597 | 2014-11-27 20:30:33 +0000 | [diff] [blame] | 14 | data_flash = f.read() |
| 15 | fout.write(data_flash) |
Paul Sokolovsky | bf47b71 | 2016-08-04 00:21:05 +0300 | [diff] [blame] | 16 | # First 4 bytes include flash size, etc. which may be changed |
| 17 | # by esptool.py, etc. |
| 18 | md5.update(data_flash[4:]) |
Damien George | 69661f3 | 2020-02-27 15:36:53 +1100 | [diff] [blame^] | 19 | print("flash ", len(data_flash)) |
Damien George | 075d597 | 2014-11-27 20:30:33 +0000 | [diff] [blame] | 20 | |
Damien George | 69661f3 | 2020-02-27 15:36:53 +1100 | [diff] [blame^] | 21 | with open(sys.argv[2], "rb") as f: |
Damien George | 075d597 | 2014-11-27 20:30:33 +0000 | [diff] [blame] | 22 | data_rom = f.read() |
Paul Sokolovsky | a621333 | 2016-08-04 00:19:09 +0300 | [diff] [blame] | 23 | |
Damien George | 69661f3 | 2020-02-27 15:36:53 +1100 | [diff] [blame^] | 24 | pad = b"\xff" * (SEGS_MAX_SIZE - len(data_flash)) |
Paul Sokolovsky | a621333 | 2016-08-04 00:19:09 +0300 | [diff] [blame] | 25 | assert len(pad) >= 4 |
| 26 | fout.write(pad[:-4]) |
Paul Sokolovsky | bf47b71 | 2016-08-04 00:21:05 +0300 | [diff] [blame] | 27 | 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 George | 69661f3 | 2020-02-27 15:36:53 +1100 | [diff] [blame^] | 31 | print("padding ", len(pad)) |
Paul Sokolovsky | a621333 | 2016-08-04 00:19:09 +0300 | [diff] [blame] | 32 | |
| 33 | fout.write(data_rom) |
Paul Sokolovsky | bf47b71 | 2016-08-04 00:21:05 +0300 | [diff] [blame] | 34 | md5.update(data_rom) |
Damien George | 69661f3 | 2020-02-27 15:36:53 +1100 | [diff] [blame^] | 35 | print("irom0text", len(data_rom)) |
Damien George | 075d597 | 2014-11-27 20:30:33 +0000 | [diff] [blame] | 36 | |
Paul Sokolovsky | bf47b71 | 2016-08-04 00:21:05 +0300 | [diff] [blame] | 37 | fout.write(md5.digest()) |
| 38 | |
Damien George | 69661f3 | 2020-02-27 15:36:53 +1100 | [diff] [blame^] | 39 | print("total ", SEGS_MAX_SIZE + len(data_rom)) |
| 40 | print("md5 ", md5.hexdigest()) |