blob: 04bfb9fee11be92469e9c81937fa9ff122bbc135 [file] [log] [blame]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +02001#!/usr/bin/env python3
Jerome Forissier1bb92982017-12-15 14:27:02 +01002# SPDX-License-Identifier: BSD-2-Clause
Joakim Bech09871a72016-07-29 21:24:49 +02003#
4# Copyright (c) 2016, Linaro Limited
Joakim Bech09871a72016-07-29 21:24:49 +02005import struct
Jens Wiklander3196a2d2019-12-17 10:04:55 +01006import argparse
7
8
9def 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 Bech09871a72016-07-29 21:24:49 +020017
Jerome Forissiere06fa022018-11-14 11:02:49 +010018
Joakim Bech09871a72016-07-29 21:24:49 +020019def main():
Jens Wiklander3196a2d2019-12-17 10:04:55 +010020 args = get_args()
21
22 with open(args.inf, "rb") as f:
Joakim Bech09871a72016-07-29 21:24:49 +020023 data = f.read(4)
Jens Wiklander8108ed32019-12-17 10:00:54 +010024 magic = struct.unpack('<I', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020025 print("Magic: \t\t0x{:08x}".format(magic))
Joakim Bech09871a72016-07-29 21:24:49 +020026
27 data = f.read(1)
Jens Wiklander8108ed32019-12-17 10:00:54 +010028 version = struct.unpack('<B', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020029 print("Version: \t0x{:02x}".format(version))
Joakim Bech09871a72016-07-29 21:24:49 +020030
31 data = f.read(1)
Jens Wiklander8108ed32019-12-17 10:00:54 +010032 arch_id = struct.unpack('<B', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020033 print("ArchID: \t0x{:02x}".format(arch_id))
Joakim Bech09871a72016-07-29 21:24:49 +020034
35 data = f.read(2)
Jens Wiklander8108ed32019-12-17 10:00:54 +010036 flags = struct.unpack('<H', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020037 print("Arch Flags: \t0x{:04x}".format(arch_id))
Joakim Bech09871a72016-07-29 21:24:49 +020038
39 data = f.read(4)
Jens Wiklander8108ed32019-12-17 10:00:54 +010040 init_size = struct.unpack('<I', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020041 print("Init size: \t0x{:04x}".format(init_size))
Joakim Bech09871a72016-07-29 21:24:49 +020042
43 data = f.read(4)
Jens Wiklander8108ed32019-12-17 10:00:54 +010044 laddr_h = struct.unpack('<I', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020045 print("Load addr high:\t0x{:04x}".format(laddr_h))
Joakim Bech09871a72016-07-29 21:24:49 +020046
47 data = f.read(4)
Jens Wiklander8108ed32019-12-17 10:00:54 +010048 laddr_l = struct.unpack('<I', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020049 print("Load addr low: \t0x{:04x}".format(laddr_l))
Joakim Bech09871a72016-07-29 21:24:49 +020050
51 data = f.read(4)
Jens Wiklander8108ed32019-12-17 10:00:54 +010052 mem_usage = struct.unpack('<I', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020053 print("Mem usage: \t0x{:04x}".format(mem_usage))
Joakim Bech09871a72016-07-29 21:24:49 +020054
55 data = f.read(4)
Jens Wiklander8108ed32019-12-17 10:00:54 +010056 pgd_size = struct.unpack('<I', data)[0]
Rouven Czerwinskibbaeed42019-08-07 20:07:00 +020057 print("Pages size: \t0x{:04x}".format(pgd_size))
Joakim Bech09871a72016-07-29 21:24:49 +020058
Jerome Forissiere06fa022018-11-14 11:02:49 +010059
Joakim Bech09871a72016-07-29 21:24:49 +020060if __name__ == "__main__":
Jerome Forissiere06fa022018-11-14 11:02:49 +010061 main()