Files
F3DEX3/avail_mem.py

41 lines
1.4 KiB
Python
Raw Permalink Normal View History

2024-06-01 12:35:25 -07:00
#!python3
import glob
dirs = glob.glob("build/F3DEX3_*")
if len(dirs) == 0:
raise RuntimeError("Please build one or more microcode versions in build/ first")
smallestDmemAvail = 1000000
smallestImemAvail = 1000000
for dir in dirs:
toks = dir.split("/")
assert len(toks) == 2
ucodename = toks[1]
dmemAvail = None
imemAvail = None
with open(dir + "/" + ucodename + ".sym", "r") as f:
for l in f:
toks = l.strip().split(" ")
if len(toks) != 2:
continue
addr = int(toks[0], 16)
sym = toks[1]
2024-08-25 11:00:33 -07:00
if sym == "startFreeDmem":
2024-06-01 12:35:25 -07:00
dmemAvail = addr
2024-08-25 11:00:33 -07:00
elif sym == "endFreeDmem":
2024-06-01 12:35:25 -07:00
dmemAvail = addr - dmemAvail
2024-08-22 22:26:32 -07:00
elif sym == "startFreeImem":
2024-06-01 12:35:25 -07:00
imemAvail = addr
2024-08-22 22:26:32 -07:00
elif sym == "endFreeImem":
2024-06-01 12:35:25 -07:00
imemAvail = addr - imemAvail
if dmemAvail == None or imemAvail == None:
raise RuntimeError("Failed to extract addresses from sym file for " + ucodename)
print(f"{ucodename:<22}: DMEM avail: {dmemAvail:2d} bytes | IMEM avail: {imemAvail//4:2d} instr")
if dmemAvail < smallestDmemAvail:
smallestDmemAvail = dmemAvail
if imemAvail < smallestImemAvail:
smallestImemAvail = imemAvail
print(f"Minimum : DMEM avail: {smallestDmemAvail:2d} bytes | IMEM avail: {smallestImemAvail//4:2d} instr")