mirror of https://github.com/ARMmbed/mbed-os.git
Adding export in CSV format for the CI
parent
f754b4325a
commit
ebb3f785ba
|
@ -7,6 +7,7 @@
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import csv
|
||||||
import json
|
import json
|
||||||
import argparse
|
import argparse
|
||||||
from prettytable import PrettyTable
|
from prettytable import PrettyTable
|
||||||
|
@ -335,7 +336,7 @@ class MemapParser(object):
|
||||||
else:
|
else:
|
||||||
self.object_to_module.update({object_name:module_name})
|
self.object_to_module.update({object_name:module_name})
|
||||||
|
|
||||||
def generate_output(self, json_mode, file_output=None):
|
def generate_output(self, export_format, file_output=None):
|
||||||
"""
|
"""
|
||||||
Generates summary of memory map data
|
Generates summary of memory map data
|
||||||
|
|
||||||
|
@ -346,7 +347,7 @@ class MemapParser(object):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if file_output:
|
if file_output:
|
||||||
file_desc = open(file_output, 'w')
|
file_desc = open(file_output, 'wb')
|
||||||
else:
|
else:
|
||||||
file_desc = sys.stdout
|
file_desc = sys.stdout
|
||||||
except IOError as error:
|
except IOError as error:
|
||||||
|
@ -361,11 +362,11 @@ class MemapParser(object):
|
||||||
misc_flash_mem += self.modules[i][k]
|
misc_flash_mem += self.modules[i][k]
|
||||||
|
|
||||||
# Create table
|
# Create table
|
||||||
colums = ['Module']
|
columns = ['Module']
|
||||||
for i in list(self.print_sections):
|
for i in list(self.print_sections):
|
||||||
colums.append(i)
|
columns.append(i)
|
||||||
|
|
||||||
table = PrettyTable(colums)
|
table = PrettyTable(columns)
|
||||||
table.align["Module"] = "l"
|
table.align["Module"] = "l"
|
||||||
|
|
||||||
subtotal = dict()
|
subtotal = dict()
|
||||||
|
@ -395,7 +396,7 @@ class MemapParser(object):
|
||||||
|
|
||||||
table.add_row(subtotal_row)
|
table.add_row(subtotal_row)
|
||||||
|
|
||||||
if json_mode:
|
if export_format == 'json':
|
||||||
json_obj.append({\
|
json_obj.append({\
|
||||||
'summary':{\
|
'summary':{\
|
||||||
'static_ram':(subtotal['.data']+subtotal['.bss']),\
|
'static_ram':(subtotal['.data']+subtotal['.bss']),\
|
||||||
|
@ -406,7 +407,37 @@ class MemapParser(object):
|
||||||
|
|
||||||
file_desc.write(json.dumps(json_obj, indent=4))
|
file_desc.write(json.dumps(json_obj, indent=4))
|
||||||
file_desc.write('\n')
|
file_desc.write('\n')
|
||||||
else:
|
|
||||||
|
elif export_format == 'csv-ci': # CSV format for the CI system
|
||||||
|
|
||||||
|
csv_writer = csv.writer(file_desc, delimiter=',', quoting=csv.QUOTE_NONE)
|
||||||
|
|
||||||
|
csv_module_section = []
|
||||||
|
csv_sizes = []
|
||||||
|
for i in sorted(self.modules):
|
||||||
|
for k in self.print_sections:
|
||||||
|
csv_module_section += [i+k]
|
||||||
|
csv_sizes += [self.modules[i][k]]
|
||||||
|
|
||||||
|
csv_module_section += ['static_ram']
|
||||||
|
csv_sizes += [subtotal['.data']+subtotal['.bss']]
|
||||||
|
|
||||||
|
csv_module_section += ['heap']
|
||||||
|
csv_sizes += [subtotal['.heap']]
|
||||||
|
|
||||||
|
csv_module_section += ['stack']
|
||||||
|
csv_sizes += [subtotal['.stack']]
|
||||||
|
|
||||||
|
csv_module_section += ['total_ram']
|
||||||
|
csv_sizes += [subtotal['.data']+subtotal['.bss']+subtotal['.heap']+subtotal['.stack']]
|
||||||
|
|
||||||
|
csv_module_section += ['total_flash']
|
||||||
|
csv_sizes += [subtotal['.text']+subtotal['.data']+misc_flash_mem]
|
||||||
|
|
||||||
|
csv_writer.writerow(csv_module_section)
|
||||||
|
csv_writer.writerow(csv_sizes)
|
||||||
|
|
||||||
|
else: # default format is 'table'
|
||||||
file_desc.write(table.get_string())
|
file_desc.write(table.get_string())
|
||||||
file_desc.write('\n')
|
file_desc.write('\n')
|
||||||
file_desc.write("Static RAM memory (data + bss): %s\n" % (str(subtotal['.data']+subtotal['.bss'])))
|
file_desc.write("Static RAM memory (data + bss): %s\n" % (str(subtotal['.data']+subtotal['.bss'])))
|
||||||
|
@ -448,7 +479,7 @@ class MemapParser(object):
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
version = '0.3.9'
|
version = '0.3.10'
|
||||||
|
|
||||||
# Parser handling
|
# Parser handling
|
||||||
parser = argparse.ArgumentParser(description="Memory Map File Analyser for ARM mbed OS\nversion %s" % version)
|
parser = argparse.ArgumentParser(description="Memory Map File Analyser for ARM mbed OS\nversion %s" % version)
|
||||||
|
@ -460,8 +491,8 @@ def main():
|
||||||
|
|
||||||
parser.add_argument('-o', '--output', help='output file name', required=False)
|
parser.add_argument('-o', '--output', help='output file name', required=False)
|
||||||
|
|
||||||
parser.add_argument('-j', '--json', dest='json', required=False, action="store_true",\
|
parser.add_argument('-e', '--export', dest='export', required=False,\
|
||||||
help='output in JSON formatted list')
|
help="export format (examples: 'json', 'csv-ci', 'table': default)")
|
||||||
|
|
||||||
parser.add_argument('-v', '--version', action='version', version=version)
|
parser.add_argument('-v', '--version', action='version', version=version)
|
||||||
|
|
||||||
|
@ -470,6 +501,7 @@ def main():
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
args, remainder = parser.parse_known_args()
|
args, remainder = parser.parse_known_args()
|
||||||
|
|
||||||
# Create memap object
|
# Create memap object
|
||||||
|
@ -481,11 +513,15 @@ def main():
|
||||||
print "Unknown toolchain for memory statistics %s" % args.toolchain
|
print "Unknown toolchain for memory statistics %s" % args.toolchain
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
# default export format is table
|
||||||
|
if not args.export:
|
||||||
|
args.export = 'table'
|
||||||
|
|
||||||
# Write output in file
|
# Write output in file
|
||||||
if args.output != None:
|
if args.output != None:
|
||||||
memap.generate_output(args.json, args.output)
|
memap.generate_output(args.export, args.output)
|
||||||
else: # Write output in screen
|
else: # Write output in screen
|
||||||
memap.generate_output(args.json)
|
memap.generate_output(args.export)
|
||||||
|
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
|
@ -831,13 +831,16 @@ class mbedToolchain:
|
||||||
self.info("Unknown toolchain for memory statistics %s" % toolchain)
|
self.info("Unknown toolchain for memory statistics %s" % toolchain)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Write output to stdout
|
# Write output to stdout in text (pretty table) format
|
||||||
memap.generate_output(False)
|
memap.generate_output('table')
|
||||||
|
|
||||||
map_out = splitext(map)[0] + "_map.json"
|
|
||||||
|
|
||||||
# Write output to file in JSON format
|
# Write output to file in JSON format
|
||||||
memap.generate_output(True, map_out)
|
map_out = splitext(map)[0] + "_map.json"
|
||||||
|
memap.generate_output('json', map_out)
|
||||||
|
|
||||||
|
# Write output to file in CSV format for the CI
|
||||||
|
map_csv = splitext(map)[0] + "_map.csv"
|
||||||
|
memap.generate_output('csv-ci', map_csv)
|
||||||
|
|
||||||
|
|
||||||
from tools.settings import ARM_BIN
|
from tools.settings import ARM_BIN
|
||||||
|
|
Loading…
Reference in New Issue