1bbaeed4dSRouven Czerwinski#!/usr/bin/env python3 21bb92983SJerome Forissier# SPDX-License-Identifier: BSD-2-Clause 309871a7aSJoakim Bech# 409871a7aSJoakim Bech# Copyright (c) 2016, Linaro Limited 509871a7aSJoakim Bechimport struct 6*3196a2d1SJens Wiklanderimport argparse 7*3196a2d1SJens Wiklander 8*3196a2d1SJens Wiklander 9*3196a2d1SJens Wiklanderdef get_args(): 10*3196a2d1SJens Wiklander parser = argparse.ArgumentParser() 11*3196a2d1SJens Wiklander 12*3196a2d1SJens Wiklander parser.add_argument('--input', required=False, dest='inf', 13*3196a2d1SJens Wiklander default='../out/arm/core/tee.bin', 14*3196a2d1SJens Wiklander help='The input tee.bin') 15*3196a2d1SJens Wiklander 16*3196a2d1SJens Wiklander return parser.parse_args() 1709871a7aSJoakim Bech 18e06fa025SJerome Forissier 1909871a7aSJoakim Bechdef main(): 20*3196a2d1SJens Wiklander args = get_args() 21*3196a2d1SJens Wiklander 22*3196a2d1SJens Wiklander with open(args.inf, "rb") as f: 2309871a7aSJoakim Bech data = f.read(4) 248108ed32SJens Wiklander magic = struct.unpack('<I', data)[0] 25bbaeed4dSRouven Czerwinski print("Magic: \t\t0x{:08x}".format(magic)) 2609871a7aSJoakim Bech 2709871a7aSJoakim Bech data = f.read(1) 288108ed32SJens Wiklander version = struct.unpack('<B', data)[0] 29bbaeed4dSRouven Czerwinski print("Version: \t0x{:02x}".format(version)) 3009871a7aSJoakim Bech 3109871a7aSJoakim Bech data = f.read(1) 328108ed32SJens Wiklander arch_id = struct.unpack('<B', data)[0] 33bbaeed4dSRouven Czerwinski print("ArchID: \t0x{:02x}".format(arch_id)) 3409871a7aSJoakim Bech 3509871a7aSJoakim Bech data = f.read(2) 368108ed32SJens Wiklander flags = struct.unpack('<H', data)[0] 37bbaeed4dSRouven Czerwinski print("Arch Flags: \t0x{:04x}".format(arch_id)) 3809871a7aSJoakim Bech 3909871a7aSJoakim Bech data = f.read(4) 408108ed32SJens Wiklander init_size = struct.unpack('<I', data)[0] 41bbaeed4dSRouven Czerwinski print("Init size: \t0x{:04x}".format(init_size)) 4209871a7aSJoakim Bech 4309871a7aSJoakim Bech data = f.read(4) 448108ed32SJens Wiklander laddr_h = struct.unpack('<I', data)[0] 45bbaeed4dSRouven Czerwinski print("Load addr high:\t0x{:04x}".format(laddr_h)) 4609871a7aSJoakim Bech 4709871a7aSJoakim Bech data = f.read(4) 488108ed32SJens Wiklander laddr_l = struct.unpack('<I', data)[0] 49bbaeed4dSRouven Czerwinski print("Load addr low: \t0x{:04x}".format(laddr_l)) 5009871a7aSJoakim Bech 5109871a7aSJoakim Bech data = f.read(4) 528108ed32SJens Wiklander mem_usage = struct.unpack('<I', data)[0] 53bbaeed4dSRouven Czerwinski print("Mem usage: \t0x{:04x}".format(mem_usage)) 5409871a7aSJoakim Bech 5509871a7aSJoakim Bech data = f.read(4) 568108ed32SJens Wiklander pgd_size = struct.unpack('<I', data)[0] 57bbaeed4dSRouven Czerwinski print("Pages size: \t0x{:04x}".format(pgd_size)) 5809871a7aSJoakim Bech 59e06fa025SJerome Forissier 6009871a7aSJoakim Bechif __name__ == "__main__": 6109871a7aSJoakim Bech main() 62