UNPKG

@twilio/plugin-microvisor

Version:

Interact with your Twilio Microvisor devices

85 lines (84 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MemoryMap = exports.MicrovisorDevices = exports.MemorySegment = void 0; const xml2js_1 = require("xml2js"); class MemorySegment { constructor(start, length, writeable, cacheable) { this.start = start; this.length = length; this.writeable = writeable; this.cacheable = cacheable; } contains(address) { return address >= this.start && address < this.start + this.length; } after(address) { return address < this.start; } xmlEntry() { let memType = this.writeable ? "ram" : "rom"; let start = '0x' + this.start.toString(16).padStart(8, '0'); let length = '0x' + this.length.toString(16).padStart(8, '0'); return { memory: { $: { type: memType, start: start, length: length } } }; } } exports.MemorySegment = MemorySegment; var MicrovisorDevices; (function (MicrovisorDevices) { MicrovisorDevices[MicrovisorDevices["IMP201"] = 0] = "IMP201"; })(MicrovisorDevices = exports.MicrovisorDevices || (exports.MicrovisorDevices = {})); class MemoryMap { constructor(device) { switch (device) { case MicrovisorDevices.IMP201: this.memMap = MemoryMap.Imp201MemoryMap; break; default: throw new Error(`Unknown device ID: ${device}`); } } getSegment(address) { for (let segment of this.memMap) { if (segment.contains(address)) { return segment; } if (segment.after(address)) { return; } } } xml() { let options = { rootName: 'memory-map', xmldec: { version: '1.0' }, doctype: { pubID: '+//IDN gnu.org//DTD GDB Memory Map V1.0//EN', sysID: 'http://sourceware.org/gdb/gdb-memory-map.dtd' } }; let xmlObject = this.memMap.map(segment => segment.xmlEntry()); let builder = new xml2js_1.Builder(options); return builder.buildObject(xmlObject); } } exports.MemoryMap = MemoryMap; MemoryMap.Imp201MemoryMap = [ // FLASH new MemorySegment(0x08000000, 0x00100000, false, true), // NSC new MemorySegment(0x0C1FE000, 0x04000000, false, true), // SRAM new MemorySegment(0x20000000, 0x00080000, true, true), // Peripherals new MemorySegment(0x40000000, 0x10000000, true, false), // FMC extermal memory bank 1 new MemorySegment(0x60000000, 0x10000000, true, true), // OCTOSPI2 memory mapped new MemorySegment(0x70000000, 0x10000000, false, true), // FMC extermal memory bank 3 new MemorySegment(0x80000000, 0x10000000, true, true), // Cortex-M33 registers new MemorySegment(0xE0000000, 0x10000000, true, false), ];