]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - doc/html/deluge-t2-manual.html
Proper MSP_BSL_FLAGS for telosa and telosb based platforms using TMI modular tos...
[tinyos-2.x.git] / doc / html / deluge-t2-manual.html
index a807c8bf5fbcd42a405cceb45d3035117b00489d..8078304729dce5699e2ff3285e369fc540753377 100644 (file)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
 <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
@@ -8,6 +9,8 @@ Deluge T2 - Programming Manual
 <meta name=robots content="index,follow">
 </head>
 <body>
+<div id=title>
+<p></p>
 <p>
 
 </p>
@@ -18,11 +21,11 @@ Deluge T2 - Programming Manual
 
 
 </p>
-<h1 class=title align=center><br><br>Deluge T2 - Programming Manual</h1>
+<h1 class=title>Deluge T2 - Programming Manual</h1>
 <p></p>
 <div align=center>
 Chieh-Jan Mike Liang<br>
-Razvan Musaloiu-E.<p>May 18, 2007</p>
+Razvan Musaloiu-E.<p>January 14, 2008</p>
 </div>
 <p></p>
 <p>
@@ -39,20 +42,43 @@ Hui, and Deluge 2.0 is the most recent version. Documentations on Deluge
 <a href="http://www.cs.berkeley.edu/~jwhui/research/deluge/">http://www.cs.berkeley.edu/~jwhui/research/deluge/</a>.</p>
 <p>
 Deluge T2 is an effort to port Deluge 2.0 from TinyOS 1 to TinyOS 2. 
-Since the code from Deluge 2.0 is reused as much as possible, the 
-behavior and the usage of Deluge T2 should be similar to Deluge 2.0. 
-Having said that, it would be helpful to read the Deluge 2.0 manual and 
-related documentations.</p>
+Although the code from Deluge 2.0 is reused as much as possible, the 
+behavior and the usage of Deluge T2 are not entirely identical to Deluge 
+2.0. Having said that, it would still be helpful to read the Deluge 2.0 
+manual and related documentations.</p>
 <p>
 Deluge T2 is still in experimental phase. One current limitation is 
-platform support. Deluge T2 has been developed and tested on tmote sky 
-(<i>telosb</i>) only. In addition, Deluge T2 comes with 2 flash volumes by 
+platform support. Deluge T2 has been developed on Tmote Sky (<i>telosb</i>) 
+and MicaZ only. In addition, Deluge T2 comes with 2 flash volumes by 
 default. However, more volumes can be added, if necessary. There are 
-also minor details that will be improved in future releases.</p>
+also some minor details that will be improved in future releases.</p>
 <p>
 </p>
 <a name="node_sec_2"></a>
-<h1>2&nbsp;&nbsp;Quick Start</h1>
+<h1>2&nbsp;&nbsp;Tools Installation</h1>
+<p>Deluge T2 requires a few Python scripts that not yet included in the
+official <code class=verbatim>tinyos-tools</code> RPM package. On the CVS, the scripts are
+located in <code class=verbatim>tinyos-2.x/tools/tinyos/misc</code>. The steps to install
+them are the following:</p>
+<p>
+</p>
+<pre class=verbatim>  % cd $TOSROOT/tools
+  % ./Bootstrap
+      ...
+  % ./configure
+      ...
+  % cd tinyos/misc
+  % make ; make install
+      ...
+</pre><p></p>
+<p>
+By default, the files will be installed in <code class=verbatim>/usr/local/bin</code>. If
+desired, the <code class=verbatim>--prefix</code> parameter from <code class=verbatim>configure</code> can be
+used to indicate a different path. </p>
+<p>
+</p>
+<a name="node_sec_3"></a>
+<h1>3&nbsp;&nbsp;Quick Start</h1>
 <p></p>
 <p>
 This section introduces the basics of reprogramming with an example. In 
@@ -60,46 +86,53 @@ addition, it provides a quick test for software prerequisite. The latest
 TinyOS 2 CVS tree and Python 2.4 with pySerial support are recommended 
 for running Deluge T2.</p>
 <p>
-To start the example, we run a <code class=verbatim>burn</code> script provided in 
-<code class=verbatim>tinyos-2.x/apps/tests/deluge/Blink</code>. For example,
+To start the example, we first compile tosboot provided in <code class=verbatim>tinyos-2.x/tos/lib/tosboot</code>.
+For example,
+</p>
+<pre class=verbatim>   % make telosb
+</pre><p>
+Then, we run the <code class=verbatim>burn</code> script provided in <code class=verbatim>tinyos-2.x/apps/tests/deluge/Blink</code>.
+For example,
 </p>
-<pre class=verbatim>   % ./burn /dev/ttyUSB0
+<pre class=verbatim>   % ./burn /dev/ttyUSB0 telosb
 </pre><p>
 This <code class=verbatim>burn</code> script programs the directly-connected mote with one 
-version of blink. Then, it injects and reprograms the mote with another 
-version of blink. At this point, you can try to retrieve program image 
+version of Blink. Then, it injects and reprograms the mote with another 
+version of Blink. At this point, you can try to retrieve program image 
 versioning information. The script to interface with the mote is 
-provided in <code class=verbatim>tinyos-2.x/tools/</code>. For example,
+provided in <code class=verbatim>tinyos-2.x/tools/tinyos/misc</code>. For example,
 </p>
-<pre class=verbatim>   % tos-deluge.py /dev/ttyUSB0 -p 0
+<pre class=verbatim>   % tos-deluge /dev/ttyUSB0 telosb -p 0
 </pre><p>
-You should see something similar to the output below.</p>
-<p>
+You should see something similar to the output below.
 </p>
 <pre class=verbatim>   Pinging node ...
-   Connected to Deluge node.
    --------------------------------------------------
-   Stored image 0
-     Prog Name:   BlinkAppC     
-     Compiled On: Thu May 17 00:36:33 2007
-     Platform:    telosb          
-     User ID:     mike          
-     Host Name:   sprite        
-     User Hash:   0xC50D8DA4L
-     Num Pages:   24/24
+   Currently Executing:
+     Prog Name:   BlinkAppC
+     UID:         0xA274CBBE
+     Compiled On: Mon Jan 14 13:09:38 2008
+     Node ID:     1
    
-     Size:        26512
-     UID:         2302157803
-     Version:     6
+   Stored image 0
+     Prog Name:   BlinkAppC
+     UID:         0xD7EEFACE
+     Compiled On: Mon Jan 14 12:40:06 2008
+     Platform:    telosb
+     User ID:     tinyos2
+     Host Name:   bluephase
+     User Hash:   0x587C9C16
+     Size:        33504
+     Num Pages:   30
    --------------------------------------------------
 </pre><p></p>
 <p>
-The usage of <code class=verbatim>delugy.py</code> is available by running the script without 
-any arguments, and it will be discussed in section <a href="#node_sec_4">4</a>.</p>
+The usage of <code class=verbatim>tos-deluge</code> is available by running the script without 
+any arguments, and it will be discussed in section <a href="#node_sec_5">5</a>.</p>
 <p>
 </p>
-<a name="node_sec_3"></a>
-<h1>3&nbsp;&nbsp;Reprogramming a Network</h1>
+<a name="node_sec_4"></a>
+<h1>4&nbsp;&nbsp;Reprogramming a Network</h1>
 <p></p>
 <p>
 This section illustrates the procedure to reprogram a network. 
@@ -107,30 +140,35 @@ Specifically, we will see how program images are injected and how
 versioning information is retrieved.</p>
 <p>
 </p>
-<a name="node_sec_3.1"></a>
-<h2>3.1&nbsp;&nbsp;Setting Up the Motes</h2>
-<p>We first install both TOSBoot and a program that runs Deluge T2. For 
+<a name="node_sec_4.1"></a>
+<h2>4.1&nbsp;&nbsp;Setting Up the Motes</h2>
+<p>We first install both tosboot and a program that runs Deluge T2. For 
 simplicity, we use the golden image as the program. The golden image is 
 provided in <code class=verbatim>tinyos-2.x/apps/tests/deluge/GoldenImage</code>, and it does 
 nothing except initializing Deluge T2. This step can be done by 
 compiling and programming the mote normally. For example,
 </p>
-<pre class=verbatim>   % make telosb install,0 bsl,/dev/ttyUSB0
+<pre class=verbatim>   % CFLAGS=-DDELUGE_BASESTATION make telosb install,0 bsl,/dev/ttyUSB0
 </pre><p>
+<code class=verbatim>CFLAGS=-DDELUGE_BASESTATION</code> indicates that the current mote will 
+act as a base station, which requires an additional component to accept 
+user commands from the serial port. Normally, only one mote in the 
+network needs to be the base station, and other motes are reprogrammed 
+over-the-air. If error occurs when running the command above, you might 
+need to compile tosboot as shown in section <a href="#node_sec_3">3</a>. 
 Deluge T2 makes sure the mote ID remain persistent over image 
 reprogramming. You can test the installation by interacting with the 
-mote through <code class=verbatim>deluge.py</code>.</p>
+mote through <code class=verbatim>tos-deluge</code>.</p>
 <p>
 </p>
-<a name="node_sec_3.2"></a>
-<h2>3.2&nbsp;&nbsp;Preparing Your Application</h2>
+<a name="node_sec_4.2"></a>
+<h2>4.2&nbsp;&nbsp;Preparing Your Application</h2>
 <p>In most cases, the only two files you need to modify are the top-level
-wiring file and the Make file. You need to make sure <code class=verbatim>DelugeC</code>
-component is included. In addition, the Make file should have the
-following lines:
+wiring file and the Makefile. You need to make sure <code class=verbatim>DelugeC</code>
+component is included. In addition, the Makefile should have the
+following line:
 </p>
 <pre class=verbatim>   TINYOS_NP=BNP
-   CFLAGS += -DTOSH_DATA_LENGTH=100
 </pre><p>
 Finally, compile your application without installing it on the mote. For 
 example,
@@ -139,49 +177,55 @@ example,
 </pre><p></p>
 <p>
 </p>
-<a name="node_sec_3.3"></a>
-<h2>3.3&nbsp;&nbsp;Injecting Your Application</h2>
+<a name="node_sec_4.3"></a>
+<h2>4.3&nbsp;&nbsp;Injecting Your Application</h2>
 <p>Before a program image is disseminated in the network, we need to first 
 inject it to the base station. For example,
 </p>
-<pre class=verbatim>   % tos-deluge.py /dev/ttyUSB0 -i 1 apps/Blink/build/telosb/tos_image.xml
+<pre class=verbatim>   % tos-deluge /dev/ttyUSB0 telosb -i 1 apps/Blink/build/telosb/tos_image.xml
 </pre><p>
 You should see something similar to the output below.</p>
 <p>
 </p>
 <pre class=verbatim>   Pinging node ...
    Connected to Deluge nodes.
+   No valid image was detected.
    --------------------------------------------------
-   Stored image 1
-     No proper Deluge image found!
-   --------------------------------------------------
+   Create image: /home/tinyos2/local/bin/tos-build-deluge-image -i 1 build/telosb/tos_image.xml
    Ihex read complete:
-     Total bytes = 25526
-     Sections = 2
+     35916 bytes starting at 0x4A00
+        32 bytes starting at 0xFFE0
+     35948 bytes in 2 sections
+   CRCs:
+     0xCC0E 0xE57B 0xC224 0xE4FA 0x63EB 0xEBA5 0xE50B 
+     0x8073 0x345E 0x3BBF 0xF415 0xA7DB 0xA67C 0x6953 
+     0x6638 0x3D76 0x7218 0x0E8F 0x9C93 0xD679 0x7A50 
+     0xBFCD 0x8B57 0x7A47 0x323E 0x29FF 0x5EFF 0xB0AE 
+     0x1392 0x4A82 0xACFB 0x69D7 0x8C07 
+   --------------------------------------------------
+   36816 bytes in 28.23 seconds (1303.9932 bytes/s)     
    --------------------------------------------------
    Replace image with:
-     Prog Name:   BlinkAppC     
-     Compiled On: Mon May 07 00:01:43 2007
-     Platform:    telosb          
-     User ID:     mike          
-     Host Name:   sprite        
-     User Hash:   0xC50D8DA4L
-     Num Pages:   24/24
-   
-     Size:        26512
-     UID:         507153792
-     Version:     0
+     Prog Name:   BlinkAppC
+     UID:         0x76D2FB1B
+     Compiled On: Sun Jan 13 21:47:54 2008
+     Platform:    telosb
+     User ID:     tinyos2
+     Host Name:   bluephase
+     User Hash:   0x587C9C16
+     Size:        36816
+     Num Pages:   33
    --------------------------------------------------
 </pre><p></p>
 <p>
 </p>
-<a name="node_sec_3.4"></a>
-<h2>3.4&nbsp;&nbsp;Reprogramming with New Image</h2>
+<a name="node_sec_4.4"></a>
+<h2>4.4&nbsp;&nbsp;Reprogramming with New Image</h2>
 <p>After you decide which program image you want to reprogram, you can 
 first test on the base station by issuing the reboot command. For 
 example,
 </p>
-<pre class=verbatim>   % tos-deluge.py /dev/ttyUSB0 -r 1
+<pre class=verbatim>   % tos-deluge /dev/ttyUSB0 telosb -r 1
 </pre><p>
 After a few moments, the mote will begin quickly flashing the LEDs to 
 signify the reprogramming process.</p>
@@ -189,68 +233,80 @@ signify the reprogramming process.</p>
 Now, you can have the base station disseminate a program image to the rest of 
 the network. For example,
 </p>
-<pre class=verbatim>   % tos-deluge.py /dev/ttyUSB0 -d 1
+<pre class=verbatim>   % tos-deluge /dev/ttyUSB0 telosb -d 1
 </pre><p>
 This command instructs the base station to notify the whole network of 
-the availablility of a new program image. This notification is currently 
+the availability of a new program image. This notification is currently 
 done via TinyOS dissemination service, and it triggers all motes in the 
-network to get the new program image. Upon receiving the complete image 
-over-the-air, each node automatically reboots and reprograms itself.</p>
+network to get the new program image. After all motes receive the image 
+over-the-air, you can instruct the base station to disseminate the 
+command to reprogram in the network. For example,
+</p>
+<pre class=verbatim>   % tos-deluge /dev/ttyUSB0 telosb -dr 1
+</pre><p></p>
 <p>
 </p>
-<a name="node_sec_4"></a>
-<h1>4&nbsp;&nbsp;Deluge T2 Python Toolchain</h1>
+<a name="node_sec_5"></a>
+<h1>5&nbsp;&nbsp;Deluge T2 Python Toolchain</h1>
 <p></p>
 <p>
 Different from Deluge 2.0, Deluge T2 toolchain is written in Python. 
-However, as demonstrated in the previous section, the usage is very 
-similar.</p>
+However, as demonstrated in the previous section, the usage is similar.</p>
 <p>
 </p>
-<a name="node_sec_4.1"></a>
-<h2>4.1&nbsp;&nbsp;-p -ping</h2>
+<a name="node_sec_5.1"></a>
+<h2>5.1&nbsp;&nbsp;-p -ping</h2>
 <p>This command is useful for checking the status of program images on a 
 mote. It provides information such as program name, compile time, size 
 of the image, and so on.</p>
 <p>
 </p>
-<a name="node_sec_4.2"></a>
-<h2>4.2&nbsp;&nbsp;-i -inject</h2>
-<p>This command creates a program image from the supplied 
-<code class=verbatim>tos_image.xml</code> file, and it injects the image into specified 
-volume on the mote. All versioning information is kept on the mote, so 
-no state is stored on the PC.</p>
+<a name="node_sec_5.2"></a>
+<h2>5.2&nbsp;&nbsp;-i -inject</h2>
+<p>This command creates a program image from the supplied
+<code class=verbatim>tos_image.xml</code> file, and it injects the image into specified
+volume on the mote. </p>
 <p>
 </p>
-<a name="node_sec_4.3"></a>
-<h2>4.3&nbsp;&nbsp;-r -reboot</h2>
-<p>This command sets up the mote to reprogram itself after reboot, and then 
-it reboots the mote. This command is applicable only to the directly 
-connected mote.</p>
+<a name="node_sec_5.3"></a>
+<h2>5.3&nbsp;&nbsp;-r -reprogram</h2>
+<p>This command sets up the directly-connected mote to reprogram itself
+after reboot, and then it reboots the mote.</p>
 <p>
 </p>
-<a name="node_sec_4.4"></a>
-<h2>4.4&nbsp;&nbsp;-d -dissemination</h2>
-<p>This command instructs the directly connected mote to disseminate an 
-image to the network. This image is specified by the volume ID. Upon 
-successfully receiving an image, motes in the network automatically 
-reprogram themselves.</p>
+<a name="node_sec_5.4"></a>
+<h2>5.4&nbsp;&nbsp;-d -disseminate</h2>
+<p>This command instructs the base station mote to disseminate an image to 
+the network. This image is specified by the volume ID.</p>
 <p>
 </p>
-<a name="node_sec_4.5"></a>
-<h2>4.5&nbsp;&nbsp;-e -erase</h2>
-<p>This command erases a flash volume on the directly connected mote.</p>
+<a name="node_sec_5.5"></a>
+<h2>5.5&nbsp;&nbsp;-dr -disseminate-and-reprogram</h2>
+<p>This command asks the motes in the network not only to disseminate an
+image but also to start running it. This is accomplish using a reboot.</p>
 <p>
 </p>
-<a name="node_sec_4.6"></a>
-<h2>4.6&nbsp;&nbsp;-s -reset</h2>
-<p>This command resets versioning information of a specific image on the 
-directly connected mote.</p>
+<a name="node_sec_5.6"></a>
+<h2>5.6&nbsp;&nbsp;-e -erase</h2>
+<p>This command erases a flash volume on the base station mote.</p>
 <p>
 </p>
-<div align=right class=colophon>
-<i>Last modified: Friday, May 18th, 2007<br>
-HTML conversion by <a href="http://www.ccs.neu.edu/~dorai/tex2page/tex2page-doc.html">TeX2page 2004-09-11</a></i>
+<a name="node_sec_5.7"></a>
+<h2>5.7&nbsp;&nbsp;-s -stop</h2>
+<p>The effect of <code class=verbatim>-d</code> and <code class=verbatim>-dr</code> is continuous which means a new
+mote will become ``infected'' if he is nearby. This command stops the
+``infection''.</p>
+<p>
+</p>
+<a name="node_sec_5.8"></a>
+<h2>5.8&nbsp;&nbsp;-ls -local-stop</h2>
+<p>When <code class=verbatim>-d</code> or <code class=verbatim>-dr</code> are in effect, the volume used by them is
+locked. This command can be used to unlock the volume in order to
+erase or inject a new image.</p>
+<p>
+</p>
+<p></p>
+<div align=right class=colophon>Last modified: Monday, January 14th, 2008 2:11:03pm<br><div align=right class=advertisement>HTML conversion by <a href="http://www.ccs.neu.edu/~dorai/tex2page/tex2page-doc.html">TeX2page 20050501</a></div></div>
 </div>
 </body>
 </html>