Difference between revisions of "Deluge T2"
(→Tools Installation) |
|||
Line 23: | Line 23: | ||
By default, the files will be installed in /usr/local/bin. If desired, the --prefix parameter from configure can be used to indicate a different path. | By default, the files will be installed in /usr/local/bin. If desired, the --prefix parameter from configure can be used to indicate a different path. | ||
+ | |||
+ | The Deluge T2 tools needs [http://pyserial.sourceforge.net/ PySerial] to talk to the serial port. In Debian the packet is called python-serial. | ||
==Quick Start== | ==Quick Start== |
Revision as of 12:41, 13 June 2008
Note: This tutorial describes the Deluge T2 from latest CVS.
Contents
Introduction
Deluge is a reliable data dissemination protocol for large objects, such as program binaries. Together with a bootloader, Deluge provides a way to reprogram sensor motes in a network. Deluge is maintained by Jonathan Hui, and Deluge 2.0 is the most recent version. Documentations on Deluge 2.0 are available here.
Deluge T2 is an effort to port Deluge 2.0 from TinyOS 1 to TinyOS 2. 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.
Deluge T2 is still in experimental phase. One current limitation is platform support. Deluge T2 works on Tmote Sky (telosb), MicaZ and Iris. In addition, Deluge T2 comes with 4 flash volumes by default. However, more volumes can be added, if necessary. There are also some minor details that will be improved in future releases.
Tools Installation
Deluge T2 requires a few Python scripts that not yet included in the official tinyos-tools RPM package. On the CVS, the scripts are located in tinyos-2.x/tools/tinyos/misc. The steps to install them are the following:
% cd $TOSROOT/tools % ./Bootstrap ... % ./configure ... % cd tinyos/misc % make ; make install ...
By default, the files will be installed in /usr/local/bin. If desired, the --prefix parameter from configure can be used to indicate a different path.
The Deluge T2 tools needs PySerial to talk to the serial port. In Debian the packet is called python-serial.
Quick Start
This section introduces the basics of reprogramming with an example. In addition, it provides a quick test for software prerequisite.
To start the example, we first compile tosboot provided in tinyos-2.x/tos/lib/tosboot. For example,
% make telosb
Then, we run the burn script provided in tinyos-2.x/apps/tests/deluge/Blink. For example,
% ./burn /dev/ttyUSB0 telosb
This burn 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 versioning information. The script to interface with the mote is provided in tinyos-2.x/tools/tinyos/misc. For example,
% tos-deluge /dev/ttyUSB0 telosb -p 0
You should see something similar to the output below.
Pinging node ... -------------------------------------------------- Currently Executing: Prog Name: BlinkAppC UID: 0x2623906A Compiled On: Fri May 16 16:17:21 2008 Node ID: 1 Stored image 1 Prog Name: BlinkAppC UID: 0x2623906A Compiled On: Fri May 16 16:17:21 2008 Platform: telosb User ID: tinyos2 Host Name: bluephase User Hash: 0x587C9C16 Size: 37920 Num Pages: 34 --------------------------------------------------
The usage of tos-deluge is available by running the script without any arguments, and it will be discussed in section 5.
Reprogramming a Network
This section illustrates the procedure to reprogram a network. Specifically, we will see how program images are injected and how versioning information is retrieved.
Setting Up the Motes
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 tinyos-2.x/apps/tests/deluge/GoldenImage, and it does nothing except initializing Deluge T2. This step can be done by compiling and programming the mote normally. For example,
% CFLAGS=-DDELUGE_BASESTATION make telosb install,0 bsl,/dev/ttyUSB0
CFLAGS=-DDELUGE_BASESTATION 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 3. Deluge T2 makes sure the mote ID remain persistent over image reprogramming. You can test the installation by interacting with the mote through tos-deluge.
Preparing Your Application
In most cases, the only two files you need to modify are the top-level wiring file and the Makefile. You need to make sure DelugeC component is included. In addition, the Makefile should have the following line:
TINYOS_NP=BNP
Finally, compile your application without installing it on the mote. For example,
% make telosb
Injecting Your Application
Before a program image is disseminated in the network, we need to first inject it to the base station. For example,
% tos-deluge /dev/ttyUSB0 telosb -i 1 apps/Blink/build/telosb/tos_image.xml
You should see something similar to the output below.
Pinging node ... Connected to Deluge nodes. -------------------------------------------------- Stored image 1 Prog Name: BlinkAppC UID: 0x2623906A Compiled On: Fri May 16 16:17:21 2008 Platform: telosb User ID: tinyos2 Host Name: bluephase User Hash: 0x587C9C16 Size: 37920 Num Pages: 34 -------------------------------------------------- Create image: /home/tinyos2/local/bin/tos-build-deluge-image -i 1 build/telosb/tos_image.xml Ihex read complete: 37372 bytes starting at 0x4A00 32 bytes starting at 0xFFE0 37404 bytes in 2 sections CRCs: 0x8065 0x45C9 0x951D 0x872D 0xF099 0xDC7B 0xD9A6 0x1250 0xAE64 0xE0BB 0x43C3 0x17A0 0x2341 0x152A 0xA317 0xC737 0xFB15 0x8164 0xD852 0x539C 0x4C3F 0xE881 0x8D85 0x9F50 0xC379 0xFDAA 0xC91A 0x5037 0xEC42 0x24A2 0x4AB8 0xEAD3 0x7A9F 0xAA5F -------------------------------------------------- 37920 bytes in 48.71 seconds (778.4516 bytes/s) -------------------------------------------------- Replace image with: Prog Name: BlinkAppC UID: 0x2623906A Compiled On: Fri May 16 16:17:21 2008 Platform: telosb User ID: tinyos2 Host Name: bluephase User Hash: 0x587C9C16 Size: 37920 Num Pages: 34 --------------------------------------------------
Reprogramming with New Image
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,
% tos-deluge /dev/ttyUSB0 telosb -r 1
After a few moments, the mote will begin quickly flashing the LEDs to signify the reprogramming process.
Now, you can have the base station disseminate a program image to the rest of the network. For example,
% tos-deluge /dev/ttyUSB0 telosb -d 1
This command instructs the base station to notify the whole network of the availability of a new program image. This notification is currently done via Drip, a TinyOS dissemination service, and it triggers all motes in the 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,
% tos-deluge /dev/ttyUSB0 telosb -dr 1
Deluge T2 Python Toolchain
Different from Deluge 2.0, Deluge T2 toolchain is written in Python. However, as demonstrated in the previous section, the usage is similar.
-p -ping
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.
-i -inject
This command creates a program image from the supplied tos_image.xml file, and it injects the image into specified volume on the mote.
-r -reprogram
This command sets up the directly-connected mote to reprogram itself after reboot, and then it reboots the mote.
-d -disseminate
This command instructs the base station mote to disseminate an image to the network. This image is specified by the volume ID.
-dr -disseminate-and-reprogram
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.
-e -erase
This command erases a flash volume on the base station mote.
-s -stop
The effect of -d and -dr is continuous which means a new mote will become ``infected if he is nearby. This command stops the ``infection.
-ls -local-stop
When -d or -dr 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.