aboutsummaryrefslogtreecommitdiff
path: root/tools/chksize
blob: 0be40b47611dcf5e40085d25bac1184f037471b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env python3

import sys


def main():
    if len(sys.argv) != 4:
        sys.exit("usage: %s code_limit_hex data_limit_hex filename.map" %
                 sys.argv[0])

    sizes = {"CODE": 0, "DATA": 0, "INITIALIZED": 0}

    with open(sys.argv[3], "r") as fd:
        for line in fd.readlines():
            for seg in sizes.keys():
                if "l__%s" % seg in line:
                    sizes[seg] = int(line.split()[0], base=16)

    sizes["ROM"] = sizes["CODE"] + sizes["INITIALIZED"]

    print("\nROM: CODE  %(CODE)05d bytes\n"
          "     INIT  %(INITIALIZED)05d bytes\n"
          "     Total %(ROM)05d bytes\n"
          "RAM:       %(DATA)05d bytes\n" % sizes)

    if sizes["CODE"] > int(sys.argv[1], 16):
        sys.exit("ROM is over the limit")
    if sizes["DATA"] > int(sys.argv[2], 16):
        sys.exit("RAM is over the limit")


if __name__ == "__main__":
    main()