@twilio/plugin-microvisor
Version:
Interact with your Twilio Microvisor devices
85 lines (84 loc) • 2.93 kB
JavaScript
;
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),
];