Difference between revisions of "Avrora"

From TinyOS Wiki
Jump to: navigation, search
Line 33: Line 33:
 
= Simulating TinyOS Applications =
 
= Simulating TinyOS Applications =
  
It is assumed that you have TinyOS 2.x installed and can build applications.  Try these commands:
+
It is assumed that you have TinyOS 2.x installed and can build applications.  First simulator a trivial single-node network:
  
 
<pre>
 
<pre>
Line 73: Line 73:
 
Total throughput: 16.543306 mhz
 
Total throughput: 16.543306 mhz
 
</pre>
 
</pre>
 +
 +
Next simulate a collection of nodes:
 +
 +
<pre>
 +
cd $TOSROOT/apps/RadioCountToLeds
 +
make micaz
 +
mv build/micaz/main.exe RadioCountToLeds.elf
 +
java avrora.Main -platform=micaz -simulation=sensor-network -seconds=10 -monitors=leds,packet -nodecount=3 -stagger-start=1000000 RadioCountToLeds.elf
 +
</pre>
 +
 +
It is not clear in what situations the <tt>stagger-start</tt> option is needed.  Sometimes, without this option, simulations can fail to start due to all nodes being in lock-step.
 +
 +
The output will be voluminous and should end up with something like this:
 +
 +
<pre>
 +
  0      72595584  <==== 00.00.00.0F.A7.0F.41.88.22.22.00.FF.FF.01.00.3F.06.00.23.CE.BB  0.660 ms
 +
  1      73169483  on  off on 
 +
  1      73169491  on  on  on 
 +
  1      73169500  off on  on 
 +
  1      73355979  ----> 00.00.00.0F.A7.0F.41.88.23.22.00.FF.FF.01.00.3F.06.00.24.62.C1  0.660 ms
 +
  0      73356225  <==== 00.00.00.0F.A7.0F.41.88.23.22.00.FF.FF.01.00.3F.06.00.24.CE.B3  0.660 ms
 +
  2      73356225  <==== 00.00.00.0F.A7.0F.41.88.23.22.00.FF.FF.01.00.3F.06.00.24.CE.B3  0.660 ms
 +
==============================================================================
 +
Simulated time: 73728000 cycles
 +
Time for simulation: 4.349 seconds
 +
Total throughput: 50.85859 mhz
 +
Throughput per node: 16.952862 mhz
 +
=={ Packet monitor results }==================================================
 +
Node    sent (b/p)          recv (b/p)    corrupted (b)  lostinMiddle(p)
 +
------------------------------------------------------------------------------
 +
  0      756 / 36            1491 / 71              0      0
 +
  1      756 / 36            1491 / 71              0      0
 +
  2      735 / 35            1491 / 71              0      0
 +
</pre>
 +
 +
The important bit is at the bottom, where the packet monitor is telling us that all 3 nodes have both transmitted and received packets.
 +
 +
= TODO =
 +
 +
Add sections on:
 +
 +
* Talking to Avrora using the serial forwarder.
 +
* What monitors are available and how to use them.
 +
* Troubleshooting.

Revision as of 12:30, 21 April 2009

What is Avrora?

Avrora is a cycle-accurate simulator for sensor network programs. The MicaZ and Mica2 platforms are supported. The main Avrora web page contains a lot of good information but is not actively maintained; Avrora development has moved to Sourceforge.

Installing Avrora

Avrora works fine on Linux and Windows. The main prerequisite is a Java 5 or 6 development environment. Download the latest CVS snapshot:

cvs -d:pserver:anonymous@avrora.cvs.sourceforge.net:/cvsroot/avrora login
cvs -z3 -d:pserver:anonymous@avrora.cvs.sourceforge.net:/cvsroot/avrora co -P avrora

The following will assume that you have set $AVRORA to be the absolute path to this avrora directory.

Build Avrora:

cd $AVRORA
make avrora

There should not be any error messages.

Add $AVRORA/bin to your CLASSPATH. Ensure that you can run Avrora:

java avrora.Main

The output should be a bunch of usage information. On Cygwin the colors may not show up properly in which case you'll want to invoke Avrora using the -colors=false command line option.

Simulating TinyOS Applications

It is assumed that you have TinyOS 2.x installed and can build applications. First simulator a trivial single-node network:

cd $TOSROOT/apps/Blink
make micaz
mv build/micaz/main.exe Blink.elf
java avrora.Main -platform=micaz -simulation=sensor-network -seconds=3 -monitors=leds Blink.elf

The output should be something like this:

Avrora [Beta 1.7.107] - (c) 2003-2007 UCLA Compilers Group

Loading Blink.elf...[OK: 0.068 seconds]
=={ Simulation events }=======================================================
Node          Time   Event
------------------------------------------------------------------------------
   0       8006682  off off on  
   0       8006684  off on  on  
   0       8006686  on  on  on  
   0       8006688  on  on  off 
   0       8006690  on  off off 
   0       8006692  off off off 
   0       9793689  off off on  
   0      11579289  off off off 
   0      11579762  off on  off 
   0      13364889  off on  on  
   0      15150489  off on  off 
   0      15150962  off off off 
   0      15151490  on  off off 
   0      16936089  on  off on  
   0      18721689  on  off off 
   0      18722162  on  on  off 
   0      20507289  on  on  on  
==============================================================================
Simulated time: 22118400 cycles
Time for simulation: 1.337 seconds
Total throughput: 16.543306 mhz

Next simulate a collection of nodes:

cd $TOSROOT/apps/RadioCountToLeds
make micaz
mv build/micaz/main.exe RadioCountToLeds.elf
java avrora.Main -platform=micaz -simulation=sensor-network -seconds=10 -monitors=leds,packet -nodecount=3 -stagger-start=1000000 RadioCountToLeds.elf

It is not clear in what situations the stagger-start option is needed. Sometimes, without this option, simulations can fail to start due to all nodes being in lock-step.

The output will be voluminous and should end up with something like this:

   0      72595584  <==== 00.00.00.0F.A7.0F.41.88.22.22.00.FF.FF.01.00.3F.06.00.23.CE.BB  0.660 ms
   1      73169483  on  off on  
   1      73169491  on  on  on  
   1      73169500  off on  on  
   1      73355979  ----> 00.00.00.0F.A7.0F.41.88.23.22.00.FF.FF.01.00.3F.06.00.24.62.C1  0.660 ms
   0      73356225  <==== 00.00.00.0F.A7.0F.41.88.23.22.00.FF.FF.01.00.3F.06.00.24.CE.B3  0.660 ms
   2      73356225  <==== 00.00.00.0F.A7.0F.41.88.23.22.00.FF.FF.01.00.3F.06.00.24.CE.B3  0.660 ms
==============================================================================
Simulated time: 73728000 cycles
Time for simulation: 4.349 seconds
Total throughput: 50.85859 mhz
Throughput per node: 16.952862 mhz
=={ Packet monitor results }==================================================
Node     sent (b/p)          recv (b/p)    corrupted (b)   lostinMiddle(p)
------------------------------------------------------------------------------
   0       756 / 36            1491 / 71               0       0
   1       756 / 36            1491 / 71               0       0
   2       735 / 35            1491 / 71               0       0

The important bit is at the bottom, where the packet monitor is telling us that all 3 nodes have both transmitted and received packets.

TODO

Add sections on:

  • Talking to Avrora using the serial forwarder.
  • What monitors are available and how to use them.
  • Troubleshooting.