|
|
(17 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | __NOTOC__
| |
− | The following instructions assume you have a working version of [http://www.tinyos.net TinyOS] installed on your machine.
| |
| | | |
− | == Step 1: Download ==
| |
− | Download the tarball of Agilla's source code from [[Downloading Agilla|here]].
| |
− |
| |
− | == Step 2: Extract ==
| |
− | Extract the files using the commands below. By default, the files go under $TOSROOT. On a Windows XP/Cygwin system, $TOSROOT is by default /opt/tinyos-1.x. On a Linux or OSX machine, $TOSROOT is wherever you have installed TinyOS 1.x.
| |
− |
| |
− | <pre>
| |
− | mv Agilla*.tar.gz $TOSROOT
| |
− | cd $TOSROOT
| |
− | tar zxvf Agilla*.tar.gz
| |
− | </pre>
| |
− |
| |
− | Once you have extracted the tarball, Agilla's source code will be located in three directories:
| |
− |
| |
− | * $TOSROOT/contrib/wustl/apps/Agilla: Agilla's firmware
| |
− | * $TOSROOT/contrib/wustl/tools/java: Agilla's Agent Injector Application
| |
− | * $TOSROOT/contrib/wustl/apps/AgillaAgents: Example Mobile Agents.
| |
− |
| |
− | == Step 3: Create Makefile.Agilla ==
| |
− |
| |
− | Create a file called "Makefile.Agilla" that contains local settings in $TOSROOT/contrib/wustl/apps/Agilla. To do this, you can simply copy the example file that comes with Agilla.
| |
− |
| |
− | <pre>
| |
− | cd $TOSROOT/contrib/wustl/apps/Agilla
| |
− | cp Example\ Makefile.Agilla Makefile.Agilla
| |
− | </pre>
| |
− |
| |
− | See $TOSROOT/contrib/wustl/apps/Agilla/README for details on how to customize this file.
| |
− |
| |
− | == Step 4: Compile and Install Agilla on a Mote ==
| |
− | Compile and install Agilla onto every mote including the one that is directly attached to the PC. Be sure that every mote has a unique TinyOS address.
| |
− |
| |
− | <pre>
| |
− | cd $TOSROOT/contrib/wustl/apps/Agilla/
| |
− | make [platform]
| |
− | make [platform] reinstall.[id][programming board],[port]
| |
− | </pre>
| |
− |
| |
− | The actual command may differ slightly between Windows XP and Linux/OSX platforms, mostly because of the different ways serial ports are named. The following example commands assume a Windows XP environment.
| |
− |
| |
− | Here's a command that will install Agilla on a TelosB mote on COM5 with TinyOS address 0:
| |
− |
| |
− | <pre>
| |
− | cd $TOSROOT/contrib/wustl/apps/Agilla/
| |
− | make telosb
| |
− | make telosb reinstall.0 bsl,4
| |
− | </pre>
| |
− |
| |
− | Here's a command that will install Agilla on a Mica2 mote on COM1 with TinyOS address 1:
| |
− |
| |
− | <pre>
| |
− | cd $TOSROOT/contrib/wustl/apps/Agilla/
| |
− | make mica2
| |
− | make mica2 reinstall.1 mib510,/dev/ttyS0</pre>
| |
− |
| |
− | == Step 5: Compile the AgentInjector ==
| |
− | The AgentInjector is a Java application that enables users to inject mobile agents into an Agilla WSN. It is located in $TOSROOT/contrib/wustl/tools/java/. The main class is edu.wustl.mobilab.agilla.AgentInjector. In order to compile the AgentInjector, $TOSROOT/contrib/wustl/tools/java must be in the classpath. View the classpath using the following command:
| |
− |
| |
− | <pre>
| |
− | echo $CLASSPATH
| |
− | </pre>
| |
− |
| |
− | If it is not in the classpath, add it:
| |
− |
| |
− | <pre>
| |
− | export CLASSPATH=$CLASSPATH:$TOSROOT/contrib/wustl/tools/java
| |
− | </pre>
| |
− |
| |
− | Once the classpath is set, create a file called "Makefile.Agilla" within $TOSROOT/tools/java/edu/wustl/mobilab/agilla using the following command:
| |
− |
| |
− | <pre>
| |
− | cd $TOSROOT/contrib/wustl/tools/java/edu/wustl/mobilab/agilla
| |
− | cp Example\ Makefile.Agilla Makefile.Agilla
| |
− | make
| |
− | </pre>
| |
− |
| |
− | This file defines the MIG variable, which specifies what type of target environment the AgentInjector is connecting to. The default content of this file contains:
| |
− |
| |
− | <pre>
| |
− | #MIG = mig -target=pc java
| |
− | MIG = mig java
| |
− | </pre>
| |
− |
| |
− | If the AgentInjector is to connect to a real WSN, leave the default content as it is. If it is going to be used with TOSSIM, uncomment the first line and comment out the second line.
| |
− |
| |
− | Once you have configured Makefile.Agilla, compile the AgentInjector:
| |
− |
| |
− | <pre>
| |
− | make
| |
− | </pre>
| |
− |
| |
− | This will generate all of Agilla's messages and compile the AgentInjector.
| |
− |
| |
− | == Step 6: Creating an agilla.properties file ==
| |
− | Create a file called "agilla.properties" within $TOSROOT/contrib/wustl/tools/java/ that contains local settings for the AgentInjector:
| |
− |
| |
− | <pre>
| |
− | cd $TOSROOT/contrib/wustl/tools/java/
| |
− | cp Example\ agilla.properties agilla.properties
| |
− | </pre>
| |
− |
| |
− | == Step 7: Adding RMI Support ==
| |
− | This step is only required if you plan on remotely injecting agents using Java RMI. To enable the RMI feature, create a file called "java.policy" in $TOSROOT/tools/java with the following text:
| |
− |
| |
− | <pre>
| |
− | grant {
| |
− | permission java.net.SocketPermission "*:1024-65535","accept,connect,listen,resolve";
| |
− | permission java.io.FilePermission "<<ALL FILES>>","read,write,execute";
| |
− | permission java.util.PropertyPermission "user.dir","read,write";
| |
− | };
| |
− | </pre>
| |
− |
| |
− | == Step 8: Launch the AgentInjector ==
| |
− |
| |
− | Attach a mote to the PC and launch the AgentInjector using the appropriate COM port. The following example assumes the mote is attached to COM1.
| |
− |
| |
− | <pre>
| |
− | cd $TOSROOT/contrib/wustl/tools/java
| |
− | java -Djava.security.policy=java.policy edu.wustl.mobilab.agilla.AgentInjector \
| |
− | -comm COM1:57600 -d &
| |
− | </pre>
| |
− |
| |
− | You should see the following GUI:
| |
− |
| |
− | [[image:agent-injector.jpg|center|thumb|702px|The Agilla AgentInjector with agent 3Blink.ma opened.]]
| |
− |
| |
− | Type Ctrl+r while looking at the motes. They should all turn on all 3 LEDs on for 1 second indicating that they are resetting. If this does not occur, ensure that a mote is correctly attached to the PC. Refer to the troubleshooting section if you continue to have problems injecting agents.
| |
− |
| |
− | Type the address of the mote attached to the PC in the TOS Address box, and then click on the Inject Agent!! button. The 3Blink agent will then be compiled and injected into the network. Watch the mote attached to the PC. It should blink its LEDs 3 times each time you inject this agent.
| |
− |
| |
− | You are now ready to inject mobile agents into the sensor network!
| |
− |
| |
− | == Optional Step 1: Creating a Makelocal file ==
| |
− |
| |
− | A Makelocal file is used by TinyOS to record settings that are specific to the local platform. If you already are familiar with a Makelocal file, you can skip this step. The Makelocal file goes in $TOSROOT/tools/make and may contain the following:
| |
− |
| |
− | <pre>
| |
− | # Radio Frequencies for Mica2 motes: uncomment the line which
| |
− | # has the frequency that you want your motes to use
| |
− | #Channel 0:
| |
− | #PFLAGS += -DCC1K_DEF_FREQ=433002000
| |
− | #Channel 2:
| |
− | #PFLAGS += -DCC1K_DEF_FREQ=433616400
| |
− | #Channel 4:
| |
− | PFLAGS += -DCC1K_DEF_FREQ=434107920
| |
− | #Channel 6:
| |
− | #PFLAGS += -DCC1K_DEF_FREQ=434845141
| |
− |
| |
− | # channel 0-2: 614400
| |
− | # channel 2-4: 491520
| |
− | # channel 4-6: 737221
| |
− | #PFLAGS += -DCC1K_DEF_PRESET=4
| |
− |
| |
− | # Radio Frequencies for MicaZ and Telos motes: uncomment the
| |
− | # line which has the frequency that you want your motes to use
| |
− | #PFLAGS += -DCC2420_DEF_CHANNEL=11
| |
− | #PFLAGS += -DCC2420_DEF_CHANNEL=14
| |
− | #PFLAGS += -DCC2420_DEF_CHANNEL=15
| |
− | #PFLAGS += -DCC2420_DEF_CHANNEL=20
| |
− | #PFLAGS += -DCC2420_DEF_CHANNEL=26
| |
− |
| |
− |
| |
− | # Define for your local group in hex (otherwise it is 0x7d).
| |
− | DEFAULT_LOCAL_GROUP=0x07
| |
− |
| |
− | # Choose programmer and port. If nothing uncommented, then assumes MIB500.
| |
− | #MIB510=/dev/ttyS5
| |
− |
| |
− | # Uncomment out the following to enable Deluge
| |
− | # TINYOS_NP = BNP
| |
− | </pre>
| |
− |
| |
− | == Step ?: Configuring Environment Variables ==
| |
− |
| |
− | There are several environment variables that will make using Agilla easier. They are not required, but provide shortcuts when performing common tasks. In a Windows XP/Cygwin environment, the following commands may be included in a file called "washu.sh" located within /etc/profile.d/. In a Linux or OSX environment, they can be included in ~/.bash_profile or ~/.bashrc depending on your specific shell.
| |
− |
| |
− | <pre>
| |
− | export WUBASE=$TOSROOT/contrib/wustl
| |
− | alias cdwu="cd $WUBASE"
| |
− | alias cdwuj="cd $WUBASE/tools/java"
| |
− | alias cdwua="cd $WUBASE/apps"
| |
− | alias runsf_pc="java net.tinyos.sf.SerialForwarder -comm tossim-serial &"
| |
− | alias runsf_com1="java net.tinyos.sf.SerialForwarder -comm serial@COM1:mica2 &"
| |
− |
| |
− | export AGILLA=$WUBASE/apps/Agilla
| |
− | alias cda="cd $AGILLA"
| |
− | alias cdaa="cd $WUBASE/apps/AgillaAgents"
| |
− | alias cdaj="cd $WUBASE/tools/java/edu/wustl/mobilab/agilla"
| |
− | alias ri="java -Djava.security.policy=java.policy edu.wustl.mobilab.agilla.AgentInjector -comm COM1:115200 -d &"
| |
− | alias ri_sim="java -Djava.security.policy=java.policy edu.wustl.mobilab.agilla.AgentInjector -comm tossim-serial -d &"
| |
− | alias ri_nc="java -Djava.security.policy=java.policy edu.wustl.mobilab.agilla.AgentInjector -nc -d &"
| |
− | alias mj="cd $TOSROOT/tools/java/edu/wustl/mobilab/agilla; javac *.java"
| |
− | </pre>
| |
− |
| |
− | == Step ?: Enabling direct serial communication between Mica2 and Imote2 motes ==
| |
− |
| |
− | In order for Mica2 and MicaZ motes to communicate with Cricket motes, you need to change their UART ports to operate at 115.2kbps (the default is 57.6kbps). To change this, open $TOSROOT/tos/platforms/<platform>/HPLUART0M.nc and change outp(15, UBRR0L); to outp(7, UBRR0L);.
| |
− |
| |
− | == Downloading Pre-Packaged Versions of Agilla ==
| |
− |
| |
− | Click [[Agilla Releases|here]] to download a tarball containing Agilla's source code. Once you have downloaded it, you need to extract the source code. By default, the tarball should be extracted to /opt/tinyos-1.x.
| |
− |
| |
− |
| |
− |
| |
− | == Downloading Agilla via CVS ==
| |
− |
| |
− | The latest version of Agilla can be downloaded using CVS. It is available through the TinyOS CVS repository located on Sourceforge. Instructions for accessing TinyOS's CVS repository are available here. Checkout module tinyos-1.x/contrib/wustl using the following command:
| |
− |
| |
− | $ cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login
| |
− | $ cvs -z3 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co \
| |
− | -P tinyos-1.x/contrib/wustl
| |
− |
| |
− | If you are TinyOS developer, you can download it using:
| |
− |
| |
− | $ export CVS_RSH=ssh
| |
− | $ cvs -z3 -d:ext:developername@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co \
| |
− | -P tinyos-1.x/contrib/wustl
| |
− |
| |
− | See [[Agilla Tutorial 1|Tutorial 1]] for more details on how to install Agilla.
| |
− |
| |
− | == Demo Releases ==
| |
− |
| |
− | * IPSN SPOTS 2005 - NesC, Java
| |
− |
| |
− | == Remote Injection using RMI ==
| |
− |
| |
− | RMI is used to remotely inject agents into the sensor network. To do this, you need to install this java policy file in /opt/tinyos-1.x/contrib/wustl/tools/java. See the tutorial on how to remote inject agents via RMI.
| |
− |
| |
− | == Useful Text Editing Tools ==
| |
− |
| |
− | For Windows users, I recommend using TextPad to edit NesC and Mobile Agent files. Here are the color-syntax configurations for NesC and Agilla Agent files:
| |
− |
| |
− | * NesC
| |
− | * Mobile Agent
| |
− |
| |
− | Install them in <Program Files>\TextPad 4\system.
| |
− | If you are using Linux, I recommend gEdit. Here are the syntax files:
| |
− |
| |
− | * NesC
| |
− | * Mobile Agent
| |
− |
| |
− | Install them in /usr/share/gtksourceview-1.0/language-specs/
| |