diff options
author | Jakob Stendahl <jakobste@uio.no> | 2021-01-11 13:41:18 +0100 |
---|---|---|
committer | Jakob Stendahl <jakobste@uio.no> | 2021-01-11 13:41:18 +0100 |
commit | d17bc0fc4bb057378fadf3f9feb0de1df60d611a (patch) | |
tree | ca3069eeacb0b7379cb289d87be932956e449d9c /utils/debug/meminfo.js | |
parent | 19d65c7b2e287223113ab916e103638c5c5003f5 (diff) | |
download | hoverbit-ble-d17bc0fc4bb057378fadf3f9feb0de1df60d611a.tar.gz hoverbit-ble-d17bc0fc4bb057378fadf3f9feb0de1df60d611a.zip |
:sparkles: Add working bluetooth receiver
Diffstat (limited to 'utils/debug/meminfo.js')
-rwxr-xr-x | utils/debug/meminfo.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/utils/debug/meminfo.js b/utils/debug/meminfo.js new file mode 100755 index 0000000..e25b043 --- /dev/null +++ b/utils/debug/meminfo.js @@ -0,0 +1,65 @@ +#!/usr/bin/env node +"use strict"; + +function main() { + let fs = require("fs"); + let mfn = process.argv[2] + if (!mfn) { + console.log("usage: node " + process.argv[1] + " build/mytarget/source/myprog.map") + return + } + console.log("Map file: " + mfn) + let map = fs.readFileSync(mfn, "utf8") + let inSect = 0 + let byFileRAM = {} + let byFileROM = {} + for (let ln of map.split(/\r?\n/)) { + if (ln == "Linker script and memory map") { + inSect = 1 + } + if (/^OUTPUT\(/.test(ln)) { + inSect = 2 + } + if (inSect == 1) { + let m = /^\s*(\S*)\s+0x00000([0-9a-f]+)\s+0x([0-9a-f]+)\s+(\S+)/.exec(ln) + if (m) { + let mark = m[1] + if (mark == "*fill*" || mark == ".bss" || mark == ".relocate") + continue; + let addr = parseInt(m[2], 16) + let sz = parseInt(m[3], 16) + let fn = m[4] + if (fn == "load" && mark) fn = mark; + fn = fn.replace(/.*armv6-m/, "") + if (sz) { + let mm = addr < 0x10000000 ? byFileROM : byFileRAM + mm[fn] = (mm[fn] || 0) + sz + } + } + } + } + + console.log("*\n* ROM\n*") + dumpMap(byFileROM) + console.log("*\n* RAM\n*") + dumpMap(byFileRAM) +} + +function printEnt(sz, s) { + let ff = (" " + sz).slice(-7) + console.log(ff + " " + s) +} + +function dumpMap(m) { + let k = Object.keys(m) + k.sort((a, b) => m[a] - m[b]) + let sum = 0 + for (let s of k) { + printEnt(m[s], s) + sum += m[s] + } + printEnt(sum, "TOTAL") +} + + +main()
\ No newline at end of file |