3 # SPDX-License-Identifier: BSD-3-Clause
6 This utility computes and fills Exynos ROM checksum (for BL1 or BL2).
7 (Algorithm from U-Boot: tools/mkexynosspl.c)
9 Input: IN OUT DATA_SIZE
13 IN padded out to DATA_SIZE, checksum at the end, written to OUT.
21 exit('usage: %s IN OUT DATA_SIZE' % argv
[0])
23 in_name
, out_name
= argv
[1:3]
24 size
= int(argv
[3], 0)
25 checksum_format
= "<I"
26 with
open(in_name
, "rb") as in_file
, open(out_name
, "wb") as out_file
:
28 checksum_size
= struct
.calcsize(checksum_format
)
29 data_size
= size
- checksum_size
30 assert len(data
) <= data_size
31 checksum
= struct
.pack(checksum_format
, sum(data
))
32 out_file
.write(data
+ bytearray(data_size
- len(data
)) + checksum
)
35 if __name__
== '__main__':