Files
SDK_SG200x_V2/build/scripts/pad_atf_crc.py
forum_service 0ca73f9917 build: weekly-rls-2024-01-05
Change-Id: Idaacdb06e9b7bd435f1928d62d8b1204747380b6
2024-05-31 14:35:32 +08:00

58 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python3
# PYTHON_ARGCOMPLETE_OK
import logging
import argparse
import binascii
from struct import pack
import build_helper
try:
import argcomplete
except ImportError:
argcomplete = None
build_helper.check_python_min_version()
def parse_args():
parser = argparse.ArgumentParser(description="Pad ATF CRC")
parser.add_argument("-v", "--verbose", default="INFO")
parser.add_argument("--logfile", type=str)
parser.add_argument("--pad-crc", type=str)
if argcomplete:
argcomplete.autocomplete(parser)
return parser.parse_args()
def pad_crc(path):
logging.info("Pad CRC16 to %s", path)
with open(path, "rb") as fp:
din = fp.read()
c = binascii.crc_hqx(din, 0)
logging.info("CRC16=0x%04x", c)
dout = din + pack("<H", c) + b"\xFE\xCA"
with open(path, "wb") as fp:
fp.write(dout)
def main():
args = parse_args()
build_helper.init_logging(args.logfile, stdout_level=args.verbose)
build_helper.dump_debug_info()
if args.pad_crc:
pad_crc(args.pad_crc)
logging.info("END")
if __name__ == "__main__":
main()