1#!/usr/bin/env python3 2# 3# SPDX-License-Identifier: BSD-3-Clause 4 5""" 6This utility computes and fills Exynos ROM checksum (for BL1 or BL2). 7(Algorithm from U-Boot: tools/mkexynosspl.c) 8 9Input: IN OUT 10 11Output: 12 13 Checksum header added to IN and written to OUT. 14 Header: uint32_t size, checksum, reserved[2]. 15""" 16 17import struct 18import sys 19 20def main(argv): 21 if len(argv) != 3: 22 exit('usage: %s IN OUT' % argv[0]) 23 24 in_name, out_name = argv[1:3] 25 header_format = "<IIII" 26 with open(in_name, "rb") as in_file, open(out_name, "wb") as out_file: 27 data = in_file.read() 28 header = struct.pack(header_format, 29 struct.calcsize(header_format) + len(data), 30 sum(data), 31 0, 0) 32 out_file.write(header + data) 33 34 35if __name__ == '__main__': 36 main(sys.argv) 37