ESPTerm - ESP8266 terminal emulator. Branches: [master] patches, [work] next release
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
espterm-firmware/showmem.php

58 lines
1.3 KiB

#!/bin/env php
<?php
$dump = trim(shell_exec('xtensa-lx106-elf-size build/httpd_app.a -A'));
$pieces = explode("\n\n", $dump);
$all_sections = [];
$table = [];
foreach ($pieces as $piece) {
$rows = explode("\n", trim($piece));
if (!$rows) continue;
list($name,) = explode(' ', trim($rows[0]));
$entries = array_map(function($s) {
$pcs = preg_split('/\s+/', $s);
return [$pcs[0], $pcs[1]];
}, array_slice($rows, 3, count($rows)-4));
foreach($entries as $e) {
list($space, $bytes) = $e;
if (!in_array($space, $all_sections)) $all_sections[] = $space;
$table[$name][$space] = $bytes;
}
}
if ($argv[1]) {
$key = $argv[1];
uasort($table, function($a, $b) use ($key) {
$av = $a[$key] ?? 0;
$bv = $b[$key] ?? 0;
return -($av <=> $bv);
});
}
$all_sections = array_diff($all_sections, [
'.comment',
'.xtensa.info',
'.xt.lit',
'.xt.prop',
'.literal',
'.irom0.literal',
'.data',
]);
$widths = [];
foreach($all_sections as $k) {
$widths[$k] = max(8, strlen($k));
printf("%".($widths[$k])."s ", $k);
}
echo "\n";//.str_repeat('-',array_sum($widths))."\n";
foreach ($table as $file => $map) {
foreach ($all_sections as $space) {
$b = isset($map[$space]) ? $map[$space] : 0;
printf("%".$widths[$space]."d ", $b);
}
echo " $file\n";
}