mirror of https://github.com/contiki-ng/mspsim
Merge pull request #23 from nfi/command-argument
Added option to specify CLI commands as arguments when starting MSPSim
This commit is contained in:
commit
43e3041dc4
34
Makefile
34
Makefile
|
|
@ -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.util.IHexReader $(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
|
||||
|
||||
|
|
|
|||
17
build.xml
17
build.xml
|
|
@ -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,10 +98,17 @@
|
|||
<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>
|
||||
|
||||
<target name="run" depends="runsky"/>
|
||||
<target name="run" depends="jar" description="run MSPSim">
|
||||
<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>
|
||||
|
||||
<target name="cputest" depends="jar" description="run MSPSim CPU test">
|
||||
<property name="FIRMWAREFILE" value="tests/cputest.sky"/>
|
||||
|
|
@ -104,6 +118,7 @@
|
|||
|
||||
<java fork="true" classpath="${jarfile}" classname="se.sics.mspsim.util.Test">
|
||||
<arg value="${FIRMWAREFILE}"/>
|
||||
<arg line="${ARGS}"/>
|
||||
</java>
|
||||
</target>
|
||||
|
||||
|
|
|
|||
|
|
@ -13,5 +13,4 @@ service -f nodegui start
|
|||
service -f serialgui start
|
||||
#service -f stackchart start
|
||||
#rflistener output CC2420 >> rfdata.txt
|
||||
stop
|
||||
#start
|
||||
start
|
||||
|
|
|
|||
|
|
@ -28,16 +28,12 @@
|
|||
*
|
||||
* This file is part of MSPSim.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* -----------------------------------------------------------------
|
||||
*
|
||||
* Main
|
||||
*
|
||||
* Authors : Joakim Eriksson, Niclas Finne
|
||||
* Created : 6 nov 2008
|
||||
* Updated : $Date$
|
||||
* $Revision$
|
||||
*/
|
||||
|
||||
package se.sics.mspsim;
|
||||
|
|
@ -95,7 +91,21 @@ public class Main {
|
|||
if (nodeType != null) {
|
||||
node = createNode(nodeType);
|
||||
} else {
|
||||
platform = config.getProperty("platform", "sky");
|
||||
platform = config.getProperty("platform");
|
||||
if (platform == null) {
|
||||
// Default platform
|
||||
platform = "sky";
|
||||
|
||||
// Guess platform based on firmware filename suffix.
|
||||
// TinyOS firmware files are often named 'main.exe'.
|
||||
String[] a = config.getArguments();
|
||||
if (a.length > 0 && !"main.exe".equals(a[0])) {
|
||||
int index = a[0].lastIndexOf('.');
|
||||
if (index > 0) {
|
||||
platform = a[0].substring(index + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
nodeType = getNodeTypeByPlatform(platform);
|
||||
node = createNode(nodeType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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("-----------------------------------------------");
|
||||
|
|
|
|||
|
|
@ -76,6 +76,13 @@ public class ArgumentManager extends ConfigManager {
|
|||
ArrayList<String> list = new ArrayList<String>();
|
||||
ArrayList<String> config = new ArrayList<String>();
|
||||
for (int i = 0, n = args.length; i < n; i++) {
|
||||
if ("-".equals(args[i])) {
|
||||
// The rest should be considered arguments
|
||||
for(++i; i < args.length; i++) {
|
||||
list.add(args[i]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (args[i].startsWith("-")) {
|
||||
String param = args[i].substring(1);
|
||||
String value = "";
|
||||
|
|
|
|||
Loading…
Reference in New Issue