- MemoryMap added (not fully implemented yet)
git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@61 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c
This commit is contained in:
45
mcdp/src/ch/ntb/mcdp/system/memMap/Device.java
Normal file
45
mcdp/src/ch/ntb/mcdp/system/memMap/Device.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package ch.ntb.mcdp.system.memMap;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class Device {
|
||||
|
||||
private String type;
|
||||
|
||||
private int width;
|
||||
|
||||
private int size = -1;
|
||||
|
||||
private MemAttributes attr;
|
||||
|
||||
LinkedList<Segment> segments;
|
||||
|
||||
Device(String type, int width) {
|
||||
this.type = type;
|
||||
this.width = width;
|
||||
this.attr = new MemAttributes();
|
||||
this.size = -1;
|
||||
segments = new LinkedList<Segment>();
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public MemAttributes getAttributes() {
|
||||
return attr;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
public void setSize(int size) {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
}
|
||||
82
mcdp/src/ch/ntb/mcdp/system/memMap/MemAttributes.java
Normal file
82
mcdp/src/ch/ntb/mcdp/system/memMap/MemAttributes.java
Normal file
@@ -0,0 +1,82 @@
|
||||
package ch.ntb.mcdp.system.memMap;
|
||||
|
||||
/**
|
||||
* Attributes for <code>Device</code> and <code>Segment</code> objects.<br>
|
||||
* Use the predefined constants to set or unset an attribute.
|
||||
*
|
||||
* @author schlaepfer
|
||||
*
|
||||
*/
|
||||
public class MemAttributes {
|
||||
|
||||
public static int NOF_ATTRIBUTES = 8;
|
||||
|
||||
public static int read = 0, write = 1, const_ = 2, code = 3, var = 4,
|
||||
sysconst = 5, heap = 6, stack = 7;
|
||||
|
||||
private boolean[] values = new boolean[NOF_ATTRIBUTES];
|
||||
|
||||
MemAttributes() {
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
values[i] = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void set(int index) {
|
||||
values[index] = true;
|
||||
}
|
||||
|
||||
public void unset(int index) {
|
||||
values[index] = false;
|
||||
}
|
||||
|
||||
public boolean isSet(int index) {
|
||||
return values[index];
|
||||
}
|
||||
|
||||
public boolean isReadSet() {
|
||||
return values[read];
|
||||
}
|
||||
|
||||
public boolean isWriteSet() {
|
||||
return values[write];
|
||||
}
|
||||
|
||||
public boolean isConstSet() {
|
||||
return values[const_];
|
||||
}
|
||||
|
||||
public boolean isCodeSet() {
|
||||
return values[code];
|
||||
}
|
||||
|
||||
public boolean isVarSet() {
|
||||
return values[var];
|
||||
}
|
||||
|
||||
public boolean isSysconstSet() {
|
||||
return values[sysconst];
|
||||
}
|
||||
|
||||
public boolean isHeapSet() {
|
||||
return values[heap];
|
||||
}
|
||||
|
||||
public boolean isStackSet() {
|
||||
return values[stack];
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
values[i] = false;
|
||||
}
|
||||
}
|
||||
|
||||
public MemAttributes clone() {
|
||||
MemAttributes at = new MemAttributes();
|
||||
for (int i = 0; i < NOF_ATTRIBUTES; i++) {
|
||||
at.values[i] = values[i];
|
||||
}
|
||||
return at;
|
||||
}
|
||||
}
|
||||
407
mcdp/src/ch/ntb/mcdp/system/memMap/MemoryMap.java
Normal file
407
mcdp/src/ch/ntb/mcdp/system/memMap/MemoryMap.java
Normal file
@@ -0,0 +1,407 @@
|
||||
package ch.ntb.mcdp.system.memMap;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NamedNodeMap;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.ErrorHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXParseException;
|
||||
|
||||
public class MemoryMap {
|
||||
|
||||
private TreeMap<String, Device> devices;
|
||||
|
||||
// Elements
|
||||
private static final String E_MEMORY_MAP = "memorymap";
|
||||
|
||||
private static final String E_DEVICE = "device";
|
||||
|
||||
private static final String A_DEVICE_TYPE = "type";
|
||||
|
||||
private static final String A_DEVICE_WIDTH = "width";
|
||||
|
||||
private static final String E_ATTRIBUTES = "attributes";
|
||||
|
||||
private static final String E_SIZE = "size";
|
||||
|
||||
private static final String E_SEGMENT = "segment";
|
||||
|
||||
private static final String E_INIT = "init";
|
||||
|
||||
private static final String E_ASSIGNMENT = "assignment";
|
||||
|
||||
private static final String A_NAME = "name";
|
||||
|
||||
private static final String A_TYPE = "type";
|
||||
|
||||
private static final String A_TYPE_VALUE = "value";
|
||||
|
||||
private static final String A_TYPE_URI = "uri";
|
||||
|
||||
private static final String A_MODE = "mode";
|
||||
|
||||
private static final String V_MODE_REPLACE = "replace";
|
||||
|
||||
private static final String A_READ = "read";
|
||||
|
||||
private static final String A_WRITE = "write";
|
||||
|
||||
private static final String A_CONST = "const";
|
||||
|
||||
private static final String A_CODE = "code";
|
||||
|
||||
private static final String A_VAR = "var";
|
||||
|
||||
private static final String A_SYSCONST = "sysconst";
|
||||
|
||||
private static final String A_HEAP = "heap";
|
||||
|
||||
private static final String A_STACK = "stack";
|
||||
|
||||
private static final String V_ADD = "add";
|
||||
|
||||
private static final String V_REMOVE = "remove";
|
||||
|
||||
private static final String E_BASE = "base";
|
||||
|
||||
private static final String E_SUBSEGMENT = "subsegment";
|
||||
|
||||
private static final String E_SUBSEGMENTLIST = "subsegmentList";
|
||||
|
||||
private static final String A_START_ID = "startID";
|
||||
|
||||
private static final String A_NUMBER_OF_ENTRIES = "numberOfEntries";
|
||||
|
||||
private int parseInt(String s) {
|
||||
if (s == "")
|
||||
return 0;
|
||||
if (s.indexOf('x') > 0) {
|
||||
// is hex number
|
||||
if (s.length() <= 2) { // exception for "0x"
|
||||
throw new NumberFormatException("string too short: " + s);
|
||||
}
|
||||
if ((s.length() > 10)) { // exception for e.g. 0x112345678
|
||||
throw new NumberFormatException("number too large: " + s);
|
||||
}
|
||||
// check if string too long (max
|
||||
return (int) Long.parseLong(s.substring(s.indexOf('x') + 1, s
|
||||
.length()), 16);
|
||||
} else {
|
||||
// is decimal number
|
||||
return Integer.parseInt(s);
|
||||
}
|
||||
}
|
||||
|
||||
public MemoryMap(String pathToMemFile) throws ParserConfigurationException,
|
||||
SAXException, IOException {
|
||||
devices = new TreeMap<String, Device>();
|
||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||
factory.setValidating(true);
|
||||
factory.setNamespaceAware(true);
|
||||
factory.setXIncludeAware(true);
|
||||
DocumentBuilder builder = factory.newDocumentBuilder();
|
||||
builder.setErrorHandler(new ErrorHandler() {
|
||||
// ignore fatal errors (an exception is guaranteed)
|
||||
public void fatalError(SAXParseException exception)
|
||||
throws SAXException {
|
||||
}
|
||||
|
||||
// treat validation errors as fatal error
|
||||
public void error(SAXParseException e) throws SAXParseException {
|
||||
throw e;
|
||||
}
|
||||
|
||||
// treat warnings as fatal error
|
||||
public void warning(SAXParseException e) throws SAXParseException {
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
Document document = builder.parse(new File(pathToMemFile));
|
||||
NodeList list = document.getElementsByTagName(E_MEMORY_MAP);
|
||||
if (list == null) {
|
||||
throw new SAXParseException("<" + E_MEMORY_MAP
|
||||
+ "> element not found", null);
|
||||
}
|
||||
list = list.item(0).getChildNodes();
|
||||
for (int i = 0; i < list.getLength(); i++) {
|
||||
// Device (REQUIRED+)
|
||||
System.out.println(list.item(i).getNodeName());
|
||||
if (list.item(i).getNodeName().equals(E_DEVICE)) {
|
||||
Device d = parseDevice(list.item(i));
|
||||
devices.put(d.getType(), d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Device parseDevice(Node node) {
|
||||
NamedNodeMap attributes = node.getAttributes();
|
||||
String type = null;
|
||||
int width = 0;
|
||||
for (int j = 0; j < attributes.getLength(); j++) {
|
||||
if (attributes.item(j).getNodeName().equals(A_DEVICE_TYPE)) {
|
||||
type = attributes.item(j).getNodeValue();
|
||||
System.out.println("\tType: " + type);
|
||||
} else if (attributes.item(j).getNodeName().equals(A_DEVICE_WIDTH)) {
|
||||
width = parseInt(attributes.item(j).getNodeValue());
|
||||
System.out.println("\tWidth: " + width);
|
||||
}
|
||||
}
|
||||
Device d = new Device(type, width);
|
||||
NodeList children = node.getChildNodes();
|
||||
for (int i = 0; i < children.getLength(); i++) {
|
||||
System.out.println("\t\t" + children.item(i).getNodeName());
|
||||
// ELEMENT attributes (REQUIRED)
|
||||
// ELEMENT size (OPTIONAL?)
|
||||
// ELEMENT segment (REQUIRED+)
|
||||
// ELEMENT init (OPTIONAL)
|
||||
if (children.item(i).getNodeName().equals(E_ATTRIBUTES)) {
|
||||
parseAttributes(children.item(i), d.getAttributes());
|
||||
} else if (children.item(i).getNodeName().equals(E_SIZE)) {
|
||||
d.setSize(parseInt(children.item(i).getTextContent()));
|
||||
} else if (children.item(i).getNodeName().equals(E_SEGMENT)) {
|
||||
d.segments
|
||||
.add(parseSegment(children.item(i), d.getAttributes()));
|
||||
} else if (children.item(i).getNodeName().equals(E_INIT)) {
|
||||
parseInit(children.item(i));
|
||||
}
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
private void setAttributes(String nodeValue, MemAttributes attributes,
|
||||
int index) {
|
||||
if (nodeValue.equals(V_ADD)) {
|
||||
attributes.set(index);
|
||||
System.out.println("setAttribute (" + index + "): set: "
|
||||
+ attributes.isSet(index));
|
||||
} else if (nodeValue.equals(V_REMOVE)) {
|
||||
attributes.unset(index);
|
||||
System.out.println("setAttribute (" + index + "): unset: "
|
||||
+ attributes.isSet(index));
|
||||
}
|
||||
}
|
||||
|
||||
private void parseAttributes(Node node, MemAttributes attributes) {
|
||||
NamedNodeMap attr = node.getAttributes();
|
||||
for (int i = 0; i < attr.getLength(); i++) {
|
||||
String nodeName = attr.item(i).getNodeName();
|
||||
String nodeValue = attr.item(i).getNodeValue();
|
||||
System.out.println(nodeName);
|
||||
if (nodeName.equals(A_MODE)) {
|
||||
if (nodeValue.equals(V_MODE_REPLACE)) {
|
||||
// clear all attributes
|
||||
attributes.reset();
|
||||
}
|
||||
} else if (nodeName.equals(A_READ)) {
|
||||
setAttributes(nodeValue, attributes, MemAttributes.read);
|
||||
} else if (nodeName.equals(A_WRITE)) {
|
||||
setAttributes(nodeValue, attributes, MemAttributes.write);
|
||||
} else if (nodeName.equals(A_CONST)) {
|
||||
setAttributes(nodeValue, attributes, MemAttributes.const_);
|
||||
} else if (nodeName.equals(A_CODE)) {
|
||||
setAttributes(nodeValue, attributes, MemAttributes.code);
|
||||
} else if (nodeName.equals(A_VAR)) {
|
||||
setAttributes(nodeValue, attributes, MemAttributes.var);
|
||||
} else if (nodeName.equals(A_SYSCONST)) {
|
||||
setAttributes(nodeValue, attributes, MemAttributes.sysconst);
|
||||
} else if (nodeName.equals(A_HEAP)) {
|
||||
setAttributes(nodeValue, attributes, MemAttributes.heap);
|
||||
} else if (nodeName.equals(A_STACK)) {
|
||||
setAttributes(nodeValue, attributes, MemAttributes.stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int convertToNumber(String constant) {
|
||||
int result = -1;
|
||||
try {
|
||||
return parseInt(constant);
|
||||
} catch (NumberFormatException e) {
|
||||
// TODO: convert constant to number
|
||||
System.out.println("setBase: Kernel Constant: " + constant);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private Segment parseSegment(Node node, MemAttributes attributes) {
|
||||
// ATTRIBUTE name (REQUIRED) TODO
|
||||
// ELEMENT attributes (OPTIONAL?)
|
||||
// ELEMENT base (REQUIRED)
|
||||
// ELEMENT size (REQUIRED)
|
||||
// ELEMENT subsegment (OPTIONAL*)
|
||||
// ELEMENT subsegmentList (OPTIONAL?)
|
||||
NamedNodeMap attrMap = node.getAttributes();
|
||||
String name = "";
|
||||
for (int i = 0; i < attrMap.getLength(); i++) {
|
||||
if (attrMap.item(i).getNodeName().equals(A_NAME)) {
|
||||
name = attrMap.item(i).getNodeValue();
|
||||
// TODO remove
|
||||
System.out.println("-> Segment: name: " + name);
|
||||
}
|
||||
}
|
||||
MemAttributes attr = attributes.clone();
|
||||
Segment s = new Segment(name, attr);
|
||||
NodeList children = node.getChildNodes();
|
||||
for (int i = 0; i < children.getLength(); i++) {
|
||||
if (children.item(i).getNodeName().equals(E_ATTRIBUTES)) {
|
||||
parseAttributes(children.item(i), attr);
|
||||
} else if (children.item(i).getNodeName().equals(E_BASE)) {
|
||||
s.setBase(convertToNumber(children.item(i).getTextContent()));
|
||||
} else if (children.item(i).getNodeName().equals(E_SIZE)) {
|
||||
s.setSize(convertToNumber(children.item(i).getTextContent()));
|
||||
} else if (children.item(i).getNodeName().equals(E_SUBSEGMENT)) {
|
||||
s.add(parseSegment(children.item(i), attr));
|
||||
} else if (children.item(i).getNodeName().equals(E_SUBSEGMENTLIST)) {
|
||||
parseSegmentList(s, children.item(i), attr);
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
private void parseSegmentList(Segment rootSegment, Node segmentList,
|
||||
MemAttributes attributes) {
|
||||
String name = "";
|
||||
int nofEntries = 0, startID = 0, size = 0;
|
||||
MemAttributes attr = rootSegment.getMemAttributes().clone();
|
||||
NamedNodeMap attrMap = segmentList.getAttributes();
|
||||
for (int i = 0; i < attrMap.getLength(); i++) {
|
||||
if (attrMap.item(i).getNodeName().equals(A_NAME)) {
|
||||
name = attrMap.item(i).getNodeValue();
|
||||
} else if (attrMap.item(i).getNodeName()
|
||||
.equals(A_NUMBER_OF_ENTRIES)) {
|
||||
nofEntries = parseInt(attrMap.item(i).getNodeValue());
|
||||
} else if (attrMap.item(i).getNodeName().equals(A_START_ID)) {
|
||||
startID = parseInt(attrMap.item(i).getNodeValue());
|
||||
}
|
||||
}
|
||||
NodeList children = segmentList.getChildNodes();
|
||||
for (int i = 0; i < children.getLength(); i++) {
|
||||
if (children.item(i).getNodeName().equals(E_ATTRIBUTES)) {
|
||||
parseAttributes(children.item(i), attr);
|
||||
} else if (children.item(i).getNodeName().equals(E_SIZE)) {
|
||||
size = parseInt(children.item(i).getTextContent());
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < nofEntries; i++) {
|
||||
Segment s = new Segment(new String(name
|
||||
+ Integer.toString(startID + i)), attr);
|
||||
s.setSize(size);
|
||||
rootSegment.add(s);
|
||||
}
|
||||
}
|
||||
|
||||
private void parseInit(Node node) {
|
||||
NodeList children = node.getChildNodes();
|
||||
for (int i = 0; i < children.getLength(); i++) {
|
||||
if (children.item(i).getNodeName().equals(E_ASSIGNMENT)) {
|
||||
NamedNodeMap attr = children.item(i).getAttributes();
|
||||
String name = null, type = null, value = null;
|
||||
for (int j = 0; j < attr.getLength(); j++) {
|
||||
if (attr.item(j).getNodeName().equals(A_NAME)) {
|
||||
name = attr.item(j).getNodeValue();
|
||||
} else if (attr.item(j).getNodeName().equals(A_TYPE)) {
|
||||
type = attr.item(j).getNodeValue();
|
||||
}
|
||||
}
|
||||
value = children.item(i).getTextContent();
|
||||
System.out.print("\t\t\t assignment: type = " + type
|
||||
+ ", name = " + name + ", value = ");
|
||||
if (type.equals(A_TYPE_VALUE)) {
|
||||
System.out.println("0x"
|
||||
+ Integer.toHexString(parseInt(value)));
|
||||
} else if (type.equals(A_TYPE_URI)) {
|
||||
System.out.println(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void printMemMap() {
|
||||
Collection coll = devices.values();
|
||||
System.out.println("*** *** Memory Map *** ***");
|
||||
for (Iterator iter = coll.iterator(); iter.hasNext();) {
|
||||
Device element = (Device) iter.next();
|
||||
printTab(0);
|
||||
System.out.println("Device: " + element.getType() + ", size: 0x"
|
||||
+ Integer.toHexString(element.getSize()) + ", width: "
|
||||
+ element.getWidth());
|
||||
for (Iterator segIter = element.segments.iterator(); segIter
|
||||
.hasNext();) {
|
||||
Segment seg = (Segment) segIter.next();
|
||||
printSegment(1, seg);
|
||||
}
|
||||
}
|
||||
System.out.println("*** *** *** *** *** *** *** ***");
|
||||
}
|
||||
|
||||
private void printTab(int count) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
System.out.print('\t');
|
||||
}
|
||||
}
|
||||
|
||||
private void printSegment(int indent, Segment seg) {
|
||||
printTab(indent);
|
||||
System.out.println("Segment: " + seg.getName() + ", base: 0x"
|
||||
+ Integer.toHexString(seg.getBase()) + ", size: 0x"
|
||||
+ Integer.toHexString(seg.getSize()));
|
||||
printMemAttributes(indent + 1, seg.getMemAttributes());
|
||||
for (Iterator subSegIter = seg.getSegments().iterator(); subSegIter
|
||||
.hasNext();) {
|
||||
Segment subseg = (Segment) subSegIter.next();
|
||||
printSegment(2, subseg);
|
||||
}
|
||||
}
|
||||
|
||||
private void printMemAttributes(int indent, MemAttributes attr) {
|
||||
printTab(indent);
|
||||
System.out.print("MemAttributes: ");
|
||||
for (int i = 0; i < MemAttributes.NOF_ATTRIBUTES; i++) {
|
||||
if (attr.isSet(i)) {
|
||||
if (i > 0) {
|
||||
System.out.print(", ");
|
||||
}
|
||||
String type = null;
|
||||
switch (i) {
|
||||
case 0:
|
||||
type = "read";
|
||||
break;
|
||||
case 1:
|
||||
type = "write";
|
||||
break;
|
||||
case 2:
|
||||
type = "const";
|
||||
break;
|
||||
case 3:
|
||||
type = "code";
|
||||
break;
|
||||
case 4:
|
||||
type = "var";
|
||||
break;
|
||||
case 5:
|
||||
type = "sysconst";
|
||||
break;
|
||||
case 6:
|
||||
type = "heap";
|
||||
break;
|
||||
case 7:
|
||||
type = "stack";
|
||||
break;
|
||||
}
|
||||
System.out.print(type);
|
||||
}
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
60
mcdp/src/ch/ntb/mcdp/system/memMap/Segment.java
Normal file
60
mcdp/src/ch/ntb/mcdp/system/memMap/Segment.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package ch.ntb.mcdp.system.memMap;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class Segment {
|
||||
|
||||
private LinkedList<Segment> subsegments;
|
||||
|
||||
private String name;
|
||||
|
||||
private MemAttributes attr;
|
||||
|
||||
private int base = 0;
|
||||
|
||||
private int size = 0;
|
||||
|
||||
Segment(String name) {
|
||||
this.name = name;
|
||||
subsegments = new LinkedList<Segment>();
|
||||
attr = new MemAttributes();
|
||||
}
|
||||
|
||||
Segment(String name, MemAttributes attr) {
|
||||
this.name = name;
|
||||
subsegments = new LinkedList<Segment>();
|
||||
this.attr = attr;
|
||||
}
|
||||
|
||||
public MemAttributes getMemAttributes() {
|
||||
return attr;
|
||||
}
|
||||
|
||||
public void add(Segment s) {
|
||||
subsegments.add(s);
|
||||
}
|
||||
|
||||
public LinkedList<Segment> getSegments() {
|
||||
return subsegments;
|
||||
}
|
||||
|
||||
public int getBase() {
|
||||
return base;
|
||||
}
|
||||
|
||||
public void setBase(int base) {
|
||||
this.base = base;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
public void setSize(int size) {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
33
mcdp/src/ch/ntb/mcdp/system/memMap/test/MemoryMapTest.java
Normal file
33
mcdp/src/ch/ntb/mcdp/system/memMap/test/MemoryMapTest.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package ch.ntb.mcdp.system.memMap.test;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import ch.ntb.mcdp.system.memMap.MemoryMap;
|
||||
|
||||
public class MemoryMapTest {
|
||||
|
||||
private static String filePath = "resources/targets/mpc555/memoryMap.xml";
|
||||
|
||||
public static void main(String[] args) {
|
||||
MemoryMap map = null;
|
||||
try {
|
||||
map = new MemoryMap(filePath);
|
||||
} catch (ParserConfigurationException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (SAXException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println("done");
|
||||
map.printMemMap();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user