Made the map file argument an option. Added support for specifying commands as arguments when starting MSPSim.

This commit is contained in:
Niclas Finne 2013-08-19 17:17:07 +02:00
parent c4b0e3b60d
commit ad9628fedb
3 changed files with 55 additions and 29 deletions

View File

@ -71,6 +71,10 @@ TYNDALLFIRMWARE = ${FIRMWAREFILE}
EXP5438FIRMWARE = ${FIRMWAREFILE}
endif
ifdef MAPFILE
MAPARGS := -map=$(MAPFILE)
endif
CPUTEST := tests/cputest.firmware
TIMERTEST := tests/timertest.firmware
@ -107,49 +111,49 @@ $(JARFILE): $(OBJECTS)
-@$(RM) JarManifest.txt
%.esb: jar
java -jar $(JARFILE) -platform=esb $(ARGS) $@
java -jar $(JARFILE) -platform=esb $@ $(ARGS)
%.sky: jar
java -jar $(JARFILE) -platform=sky $(ARGS) $@
java -jar $(JARFILE) -platform=sky $@ $(ARGS)
%.z1: jar
java -jar $(JARFILE) -platform=z1 $(ARGS) $@
java -jar $(JARFILE) -platform=z1 $@ $(ARGS)
%.exp5438: jar
java -jar $(JARFILE) -platform=exp5438 $(ARGS) $@
java -jar $(JARFILE) -platform=exp5438 $@ $(ARGS)
%.tyndall: jar
java -jar $(JARFILE) -platform=tyndall $(ARGS) $@
java -jar $(JARFILE) -platform=tyndall $@ $(ARGS)
%.wismote: jar
java -jar $(JARFILE) -platform=wismote $(ARGS) $@
java -jar $(JARFILE) -platform=wismote $@ $(ARGS)
help:
@echo "Usage: make [all,compile,clean,run,runsky,runesb]"
run: compile
$(JAVA) $(JAVAARGS) se.sics.mspsim.Main $(ARGS) $(FIRMWAREFILE) $(MAPFILE)
$(JAVA) $(JAVAARGS) se.sics.mspsim.Main $(FIRMWAREFILE) $(MAPARGS) $(ARGS)
runesb: compile
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.esb.ESBNode $(ARGS) $(ESBFIRMWARE) $(MAPFILE)
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.esb.ESBNode $(ESBFIRMWARE) $(MAPARGS) $(ARGS)
runsky: compile
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.sky.SkyNode $(ARGS) $(SKYFIRMWARE) $(MAPFILE)
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.sky.SkyNode $(SKYFIRMWARE) $(MAPARGS) $(ARGS)
runskyprof: compile
$(JAVA) -agentlib:yjpagent $(JAVAARGS) se.sics.mspsim.platform.sky.SkyNode $(ARGS) $(SKYFIRMWARE) $(MAPFILE)
$(JAVA) -agentlib:yjpagent $(JAVAARGS) se.sics.mspsim.platform.sky.SkyNode $(SKYFIRMWARE) $(MAPARGS) $(ARGS)
runtelos: compile
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.sky.TelosNode $(ARGS) $(SKYFIRMWARE) $(MAPFILE)
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.sky.TelosNode $(SKYFIRMWARE) $(MAPARGS) $(ARGS)
runz1: compile
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.z1.Z1Node $(ARGS) $(Z1FIRMWARE) $(MAPFILE)
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.z1.Z1Node $(Z1FIRMWARE) $(MAPARGS) $(ARGS)
runtyndall: compile
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.tyndall.TyndallNode $(ARGS) $(TYNDALLFIRMWARE) $(MAPFILE)
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.tyndall.TyndallNode $(TYNDALLFIRMWARE) $(MAPARGS) $(ARGS)
runwismote: compile
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.wismote.WismoteNode $(ARGS) $(WISMOTEFIRMWARE) $(MAPFILE)
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.wismote.WismoteNode $(WISMOTEFIRMWARE) $(MAPARGS) $(ARGS)
runexp5438: compile
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.ti.Exp5438Node $(ARGS) $(EXP5438FIRMWARE) $(MAPFILE)
$(JAVA) $(JAVAARGS) se.sics.mspsim.platform.ti.Exp5438Node $(EXP5438FIRMWARE) $(MAPARGS) $(ARGS)
test: cputest

View File

@ -10,6 +10,7 @@
<property name="javac.debug" value="true"/>
<property name="ant.build.javac.source" value="1.7"/>
<property name="ant.build.javac.target" value="1.7"/>
<property name="ARGS" value=""/>
<path id="classpath">
<fileset dir="${lib}" includes="**/*.jar"/>
@ -48,6 +49,7 @@
<property name="FIRMWAREFILE" value="firmware/esb/sensor-demo.esb"/>
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.platform.esb.ESBNode">
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>
@ -55,6 +57,7 @@
<property name="FIRMWAREFILE" value="firmware/sky/blink.sky"/>
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.platform.sky.SkyNode">
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>
@ -63,6 +66,7 @@
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.platform.sky.SkyNode">
<jvmarg value="-agentlib:yjpagent" />
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>
@ -70,6 +74,7 @@
<property name="FIRMWAREFILE" value="firmware/sky/blink.sky"/>
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.platform.sky.TelosNode">
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>
@ -77,6 +82,7 @@
<property name="FIRMWAREFILE" value="firmware/sky/blink.sky"/>
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.platform.jcreate.JCreateNode">
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>
@ -84,6 +90,7 @@
<property name="FIRMWAREFILE" value="firmware/sky/blink.sky"/>
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.platform.sentillausb.SentillaUSBNode">
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>
@ -91,6 +98,7 @@
<property name="FIRMWAREFILE" value="firmware/z1/blink.z1"/>
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.platform.z1.Z1Node">
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>
@ -98,6 +106,7 @@
<property name="FIRMWAREFILE" value="firmware/sky/blink.sky"/>
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.Main">
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>
@ -109,6 +118,7 @@
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.util.Test">
<arg value="${FIRMWAREFILE}"/>
<arg line="${ARGS}"/>
</java>
</target>

View File

@ -136,17 +136,21 @@ public abstract class GenericNode extends Chip implements Runnable {
}
}
int[] memory = cpu.memory;
if (firmwareFile.endsWith("ihex")) {
// IHEX Reading
int[] memory = cpu.memory;
IHexReader reader = new IHexReader();
reader.readFile(memory, firmwareFile);
} else {
loadFirmware(firmwareFile, memory);
loadFirmware(firmwareFile);
}
if (args.length > 1) {
MapTable map = new MapTable(args[1]);
config.setProperty("firmwareFile", firmwareFile);
String mapFile = config.getProperty("map");
if (mapFile != null) {
MapTable map = new MapTable(mapFile);
cpu.getDisAsm().setMap(map);
cpu.setMap(map);
registry.registerComponent("mapTable", map);
}
@ -159,18 +163,16 @@ public abstract class GenericNode extends Chip implements Runnable {
registry.registerComponent("controlgui", control);
registry.registerComponent("stackchart", new StackUI(cpu));
HighlightSourceViewer sourceViewer = new HighlightSourceViewer();
if (firmwareFile != null) {
// Add the firmware location to the search path
File fp = new File(firmwareFile).getParentFile();
if (fp != null) {
// Add the firmware location to the search path
File fp = new File(firmwareFile).getParentFile();
if (fp != null) {
try {
// Get absolute path
fp = fp.getCanonicalFile();
// Get absolute path
fp = fp.getCanonicalFile();
} catch (Exception e) {
// Ignore
// Ignore
}
sourceViewer.addSearchPath(fp);
}
}
control.setSourceViewer(sourceViewer);
}
@ -179,7 +181,7 @@ public abstract class GenericNode extends Chip implements Runnable {
if (script != null) {
File fp = new File(script);
if (fp.canRead()) {
CommandHandler ch = (CommandHandler) registry.getComponent("commandHandler");
CommandHandler ch = registry.getComponent(CommandHandler.class, "commandHandler");
script = script.replace('\\', '/');
System.out.println("Autoloading script: " + script);
config.setProperty("autoloadScript", script);
@ -188,7 +190,17 @@ public abstract class GenericNode extends Chip implements Runnable {
}
}
}
config.setProperty("firmwareFile", firmwareFile);
if (args.length > 1) {
// Run the following arguments as commands
CommandHandler ch = registry.getComponent(CommandHandler.class, "commandHandler");
if (ch != null) {
for (int i = 1; i < args.length; i++) {
System.out.println("calling '" + args[i] + "'");
ch.lineRead(args[i]);
}
}
}
System.out.println("-----------------------------------------------");
System.out.println("MSPSim " + MSP430Constants.VERSION + " starting firmware: " + firmwareFile);
System.out.println("-----------------------------------------------");