2019-07-19 04:26:01 +08:00
|
|
|
#! /usr/bin/python3
|
|
|
|
|
|
|
|
import json
|
|
|
|
import subprocess
|
|
|
|
import sys
|
|
|
|
|
|
|
|
def print_increase(x, y, name):
|
|
|
|
if x > y:
|
|
|
|
print("{} increase by: {} (0x{:08X}) bytes ({}%)".format(name, x-y, x-y, (x-y)*100/y))
|
|
|
|
else:
|
|
|
|
print("{} decrease by: {} (0x{:08X}) bytes ({}%)".format(name, y-x, y-x, (y-x)*100/x))
|
|
|
|
dbname = "tools/data.json"
|
2019-07-19 05:42:58 +08:00
|
|
|
try:
|
|
|
|
db = json.load(open(dbname,"r"))
|
|
|
|
except FileNotFoundError:
|
|
|
|
db = dict()
|
2019-07-19 04:26:01 +08:00
|
|
|
|
|
|
|
if len(sys.argv) < 3:
|
2019-08-26 18:50:10 +08:00
|
|
|
print("Usage: analyzesize.py <info|add|diff> <datasetname>")
|
2019-07-19 04:26:01 +08:00
|
|
|
exit(-1)
|
|
|
|
action, name = sys.argv[1:3]
|
|
|
|
currentdata = subprocess.run(["arm-none-eabi-size","armsrc/obj/fullimage.stage1.elf"], stdout=subprocess.PIPE).stdout
|
|
|
|
currentdata = currentdata.split(b"\n")[1].strip()
|
|
|
|
text,data,bss = [int(x) for x in currentdata.split(b"\t")[:3]]
|
|
|
|
if action.lower() == "add":
|
|
|
|
db[name] = [text, data, bss]
|
|
|
|
json.dump(db, open(dbname, "w"))
|
|
|
|
elif action.lower() == "diff":
|
|
|
|
text_ref, data_ref, bss_ref = db[name]
|
|
|
|
flash_ref = text_ref+data_ref
|
|
|
|
flash = text+data
|
|
|
|
print_increase(flash, flash_ref, "Flash")
|
|
|
|
print_increase(bss, bss_ref, "RAM")
|