| #!/usr/bin/env python3 |
| # |
| # SPDX-License-Identifier: BSD-3-Clause |
| |
| """ |
| This utility computes and fills Exynos ROM checksum (for BL1 or BL2). |
| (Algorithm from U-Boot: tools/mkexynosspl.c) |
| |
| Input: IN OUT |
| |
| Output: |
| |
| Checksum header added to IN and written to OUT. |
| Header: uint32_t size, checksum, reserved[2]. |
| """ |
| |
| import struct |
| import sys |
| |
| def main(argv): |
| if len(argv) != 3: |
| exit('usage: %s IN OUT' % argv[0]) |
| |
| in_name, out_name = argv[1:3] |
| header_format = "<IIII" |
| with open(in_name, "rb") as in_file, open(out_name, "wb") as out_file: |
| data = in_file.read() |
| header = struct.pack(header_format, |
| struct.calcsize(header_format) + len(data), |
| sum(data), |
| 0, 0) |
| out_file.write(header + data) |
| |
| |
| if __name__ == '__main__': |
| main(sys.argv) |