xref: /optee_os/scripts/tee_bin_parser.py (revision 8108ed32754e34b327e5efe035a51144df4e96b2)
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
609871a7aSJoakim Bech
7e06fa025SJerome Forissier
809871a7aSJoakim Bechdef main():
909871a7aSJoakim Bech    with open("../out/arm/core/tee.bin", "rb") as f:
1009871a7aSJoakim Bech        data = f.read(4)
11*8108ed32SJens Wiklander        magic = struct.unpack('<I', data)[0]
12bbaeed4dSRouven Czerwinski        print("Magic: \t\t0x{:08x}".format(magic))
1309871a7aSJoakim Bech
1409871a7aSJoakim Bech        data = f.read(1)
15*8108ed32SJens Wiklander        version = struct.unpack('<B', data)[0]
16bbaeed4dSRouven Czerwinski        print("Version: \t0x{:02x}".format(version))
1709871a7aSJoakim Bech
1809871a7aSJoakim Bech        data = f.read(1)
19*8108ed32SJens Wiklander        arch_id = struct.unpack('<B', data)[0]
20bbaeed4dSRouven Czerwinski        print("ArchID: \t0x{:02x}".format(arch_id))
2109871a7aSJoakim Bech
2209871a7aSJoakim Bech        data = f.read(2)
23*8108ed32SJens Wiklander        flags = struct.unpack('<H', data)[0]
24bbaeed4dSRouven Czerwinski        print("Arch Flags: \t0x{:04x}".format(arch_id))
2509871a7aSJoakim Bech
2609871a7aSJoakim Bech        data = f.read(4)
27*8108ed32SJens Wiklander        init_size = struct.unpack('<I', data)[0]
28bbaeed4dSRouven Czerwinski        print("Init size: \t0x{:04x}".format(init_size))
2909871a7aSJoakim Bech
3009871a7aSJoakim Bech        data = f.read(4)
31*8108ed32SJens Wiklander        laddr_h = struct.unpack('<I', data)[0]
32bbaeed4dSRouven Czerwinski        print("Load addr high:\t0x{:04x}".format(laddr_h))
3309871a7aSJoakim Bech
3409871a7aSJoakim Bech        data = f.read(4)
35*8108ed32SJens Wiklander        laddr_l = struct.unpack('<I', data)[0]
36bbaeed4dSRouven Czerwinski        print("Load addr low: \t0x{:04x}".format(laddr_l))
3709871a7aSJoakim Bech
3809871a7aSJoakim Bech        data = f.read(4)
39*8108ed32SJens Wiklander        mem_usage = struct.unpack('<I', data)[0]
40bbaeed4dSRouven Czerwinski        print("Mem usage: \t0x{:04x}".format(mem_usage))
4109871a7aSJoakim Bech
4209871a7aSJoakim Bech        data = f.read(4)
43*8108ed32SJens Wiklander        pgd_size = struct.unpack('<I', data)[0]
44bbaeed4dSRouven Czerwinski        print("Pages size: \t0x{:04x}".format(pgd_size))
4509871a7aSJoakim Bech
46e06fa025SJerome Forissier
4709871a7aSJoakim Bechif __name__ == "__main__":
4809871a7aSJoakim Bech    main()
49