Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python3 |
Jerome Forissier | 1bb9298 | 2017-12-15 14:27:02 +0100 | [diff] [blame] | 2 | # SPDX-License-Identifier: BSD-2-Clause |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 3 | # |
| 4 | # Copyright (c) 2016, Linaro Limited |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 5 | import struct |
Jens Wiklander | 3196a2d | 2019-12-17 10:04:55 +0100 | [diff] [blame] | 6 | import argparse |
| 7 | |
| 8 | |
| 9 | def get_args(): |
| 10 | parser = argparse.ArgumentParser() |
| 11 | |
| 12 | parser.add_argument('--input', required=False, dest='inf', |
| 13 | default='../out/arm/core/tee.bin', |
| 14 | help='The input tee.bin') |
| 15 | |
| 16 | return parser.parse_args() |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 17 | |
Jerome Forissier | e06fa02 | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 18 | |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 19 | def main(): |
Jens Wiklander | 3196a2d | 2019-12-17 10:04:55 +0100 | [diff] [blame] | 20 | args = get_args() |
| 21 | |
| 22 | with open(args.inf, "rb") as f: |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 23 | data = f.read(4) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 24 | magic = struct.unpack('<I', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 25 | print("Magic: \t\t0x{:08x}".format(magic)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 26 | |
| 27 | data = f.read(1) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 28 | version = struct.unpack('<B', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 29 | print("Version: \t0x{:02x}".format(version)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 30 | |
| 31 | data = f.read(1) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 32 | arch_id = struct.unpack('<B', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 33 | print("ArchID: \t0x{:02x}".format(arch_id)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 34 | |
| 35 | data = f.read(2) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 36 | flags = struct.unpack('<H', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 37 | print("Arch Flags: \t0x{:04x}".format(arch_id)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 38 | |
| 39 | data = f.read(4) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 40 | init_size = struct.unpack('<I', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 41 | print("Init size: \t0x{:04x}".format(init_size)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 42 | |
| 43 | data = f.read(4) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 44 | laddr_h = struct.unpack('<I', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 45 | print("Load addr high:\t0x{:04x}".format(laddr_h)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 46 | |
| 47 | data = f.read(4) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 48 | laddr_l = struct.unpack('<I', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 49 | print("Load addr low: \t0x{:04x}".format(laddr_l)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 50 | |
| 51 | data = f.read(4) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 52 | mem_usage = struct.unpack('<I', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 53 | print("Mem usage: \t0x{:04x}".format(mem_usage)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 54 | |
| 55 | data = f.read(4) |
Jens Wiklander | 8108ed3 | 2019-12-17 10:00:54 +0100 | [diff] [blame] | 56 | pgd_size = struct.unpack('<I', data)[0] |
Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame] | 57 | print("Pages size: \t0x{:04x}".format(pgd_size)) |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 58 | |
Jerome Forissier | e06fa02 | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 59 | |
Joakim Bech | 09871a7 | 2016-07-29 21:24:49 +0200 | [diff] [blame] | 60 | if __name__ == "__main__": |
Jerome Forissier | e06fa02 | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 61 | main() |