1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-13 19:40:20 +03:00
opentx/tools/extract-map.py
Bertrand Songis 2d4e98d15d
Bsongis/ram saving (#6685)
RAM saving. Stacks reduced to have some more RAM available than 2.2 on all boards
2019-08-30 15:46:57 +02:00

48 lines
1.2 KiB
Python
Executable file

#!/usr/bin/python3
import argparse
def line_index(lines, start):
for i, line in enumerate(lines):
if line.startswith(start):
return i
def extract_vars(lines):
result = []
lines = lines[line_index(lines, ".data"):line_index(lines, ".memory")]
i = 0
while i < len(lines):
line = lines[i]
i += 1
if line.startswith("*"):
continue
if line.startswith(" .data.") or line.startswith(" .bss."):
fields = (line + lines[i]).split()
# print(fields)
i += 1
var = fields[0].split(".")[-1]
offset = int(fields[1], 16)
size = int(fields[2], 16)
result.append((var, offset, size))
return result
def main():
parser = argparse.ArgumentParser(description="Extract firmware.map")
parser.add_argument("file", type=argparse.FileType("r"))
args = parser.parse_args()
f = args.file
lines = f.readlines()
vars = extract_vars(lines)
vars.sort(key=lambda var: "%08d %s" % (var[2], var[0]))
for var, offset, size in vars:
print("%s\t %d" % (var, size))
if __name__ == "__main__":
main()