Difference between revisions of "Leo:HowTo-install-TinyOS"

From DiLab
Jump to: navigation, search
m
 
(3 intermediate revisions by the same user not shown)
Line 14: Line 14:
In order to ensure you have all the required packages, you'll need to add the Stanford's TinyOS repository. In this example I have Ubuntu 8.04 (Hardy Heron) and will therefore ask for "hardy main".
In order to ensure you have all the required packages, you'll need to add the Stanford's TinyOS repository. In this example I have Ubuntu 8.04 (Hardy Heron) and will therefore ask for "hardy main".


First, as root, open the /etc/apt/sources.list file[[BR]]
First, as root, open the /etc/apt/sources.list file


Then add the Stanford repository.[[BR]]
Then add the Stanford repository.


deb http://tinyos.stanford.edu/tinyos/dists/ubuntu hardy main
deb http://tinyos.stanford.edu/tinyos/dists/ubuntu hardy main


Now you just need to add the packages.[[BR]]
Now you just need to add the packages.


sudo apt-get update
sudo apt-get update
sudo apt-get install cvs subversion autoconf automake1.9 python-dev
sudo apt-get install cvs subversion autoconf automake1.9 python-dev
sudo apt-get install g++ g++-3.4 gperf swig sun-java5-jdk graphviz alien fakeroot
sudo apt-get install g++ g++-3.4 gperf swig sun-java6-jdk graphviz alien fakeroot
sudo apt-get install tinyos
sudo apt-get install tinyos-2.1.0

The last line will complain that it is a virtual package, therefore look at which version you need and install that one (use the latest if in doubt). I just used:

sudo apt-get install tinyos-2.1.0


To make sure that we have no interference with the USB->Serial connection we may want to remove the 'brltty' package.
To make sure that we have no interference with the USB->Serial connection we may want to remove the 'brltty' package.
Line 34: Line 38:


cd /opt
cd /opt
sudo ln -s tinyos-2.0.2 tinyos-2.x
sudo ln -s tinyos-2.1.0 tinyos-2.x

Note, that you should use whichever version of the TinyOS you just installed


== Environment Variables ==
== Environment Variables ==


This guide sets up your development environment so you can use TinyOS 1.x, TinyOS 2.x, and Boomerang. To make life easy you can download this file here http://www.5secondfuse.com/tinyos/.bash_tinyos and save it to your home directory. You'll need to add a line to your .bashrc (in your home directory) to source this file on login. If you use a different shell it would be fairly trivial to change over.
This guide sets up your development environment so you can use TinyOS 1.x, TinyOS 2.x, and Boomerang. To make life easy you can download this file here http://www.5secondfuse.com/tinyos/.bash_tinyos and save it to your home directory. You may want to check if you use the same java version as in the file, and adjust to what you have, e.g. java-1.6.0-sun.

Then add a line to your .bashrc (in your home directory) to source this file on login. If you use a different shell it would be fairly trivial to change over.


# Add this to your .bashrc
# Add this to your .bashrc
Line 47: Line 55:
The script will allow you to switch between environments on fly. It will also define your $TOSROOT setting.
The script will allow you to switch between environments on fly. It will also define your $TOSROOT setting.


metcalfc@TinyLaptop:~$ tos1[[BR]]
metcalfc@TinyLaptop:~$ tos1
Setting up for TinyOS 1.x[[BR]]
Setting up for TinyOS 1.x
... Do TinyOS 1.x work ...[[BR]]
... Do TinyOS 1.x work ...
metcalfc@TinyLaptop:~$ tos2[[BR]]
metcalfc@TinyLaptop:~$ tos2
Setting up for TinyOS 2.x ...[[BR]]
Setting up for TinyOS 2.x ...
... Do TinyOS 2.x work[[BR]]
... Do TinyOS 2.x work


== Install TinyOS 1.x ==
== Install TinyOS 1.x ==
Line 64: Line 72:
== Optional: Install TinyOS from CVS ==
== Optional: Install TinyOS from CVS ==


If you decided to use the bleeding edge from cvs. You can put it anywhere. Here I've chosen my home directory. You'll still have the official release in /opt. You'll also need to update your .bash_tinyos to reflect where you put it.[[BR]]
If you decided to use the bleeding edge from cvs. You can put it anywhere. Here I've chosen my home directory. You'll still have the official release in /opt. You'll also need to update your .bash_tinyos to reflect where you put it.


cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login
cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login
Line 72: Line 80:
== Java Serial Communications for TinyOS 1.x ==
== Java Serial Communications for TinyOS 1.x ==


You'll need to install TOSComm in order for your TinyOS 1.x Java toolchain to work. Yes, the TinyOS-tools package from TinyOS 2.x does this but it doesn't work for 1.x. And yes the two can coexist in your $JDKROOT.[[BR]]
You'll need to install TOSComm in order for your TinyOS 1.x Java toolchain to work. Yes, the TinyOS-tools package from TinyOS 2.x does this but it doesn't work for 1.x. And yes the two can coexist in your $JDKROOT.


The installer detects the wrong location to install the files to because of the alternatives setup. Edit the JAVADIR rule in the $TOSROOT/beta/TOSComm/comm/Makefile with (This is for your TinyOS 1 installation):[[BR]]
The installer detects the wrong location to install the files to because of the alternatives setup. Edit the JAVADIR rule in the $TOSROOT/beta/TOSComm/comm/Makefile with (This is for your TinyOS 1 installation):


JAVADIR=/usr/lib/jvm/java-6-sun
JAVADIR=/usr/lib/jvm/java-6-sun


Now install it. We'll alias g++ to the correct version so we don't have to edit anymore makefiles.[[BR]]
Now install it. We'll alias g++ to the correct version so we don't have to edit anymore makefiles.


alias g++=g++-3.4; cd $TOSROOT/beta/TOSComm/comm; make
alias g++=g++-3.4; cd $TOSROOT/beta/TOSComm/comm; make

Latest revision as of 00:52, 10 December 2008

TinyOS Development Environment Setup

Install Ubuntu

More here: http://www.ubuntu.com

At the time of this writeup we are using Ubuntu 8.04 (July 2008).


Install TinyOS 2.x

Adapted from http://www.5secondfuse.com/tinyos/install.html and [WSN project at the University of Skovde].

In order to ensure you have all the required packages, you'll need to add the Stanford's TinyOS repository. In this example I have Ubuntu 8.04 (Hardy Heron) and will therefore ask for "hardy main".

First, as root, open the /etc/apt/sources.list file

Then add the Stanford repository.

 deb http://tinyos.stanford.edu/tinyos/dists/ubuntu hardy main

Now you just need to add the packages.

sudo apt-get update
sudo apt-get install cvs subversion autoconf automake1.9 python-dev  
sudo apt-get install g++ g++-3.4 gperf swig sun-java6-jdk graphviz alien fakeroot
sudo apt-get install tinyos-2.1.0

The last line will complain that it is a virtual package, therefore look at which version you need and install that one (use the latest if in doubt). I just used:

sudo apt-get install tinyos-2.1.0

To make sure that we have no interference with the USB->Serial connection we may want to remove the 'brltty' package.

sudo apt-get remove brltty 

Finally we need to make a logical link to the /opt/tinyos-2.x. If your tinyos2 installation is located in /opt/tinyos-2.0.2 we do the following:

cd /opt
sudo ln -s tinyos-2.1.0 tinyos-2.x

Note, that you should use whichever version of the TinyOS you just installed

Environment Variables

This guide sets up your development environment so you can use TinyOS 1.x, TinyOS 2.x, and Boomerang. To make life easy you can download this file here http://www.5secondfuse.com/tinyos/.bash_tinyos and save it to your home directory. You may want to check if you use the same java version as in the file, and adjust to what you have, e.g. java-1.6.0-sun.

Then add a line to your .bashrc (in your home directory) to source this file on login. If you use a different shell it would be fairly trivial to change over.

# Add this to your .bashrc
if [ -f ~/.bash_tinyos ]; then
    . ~/.bash_tinyos
fi

The script will allow you to switch between environments on fly. It will also define your $TOSROOT setting.

metcalfc@TinyLaptop:~$ tos1 Setting up for TinyOS 1.x ... Do TinyOS 1.x work ... metcalfc@TinyLaptop:~$ tos2 Setting up for TinyOS 2.x ... ... Do TinyOS 2.x work

Install TinyOS 1.x

Residing in a directory (e.g. your home directory), use:

cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login
cvs -z3 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co tinyos-1.x
sudo mv tinyos-1.x /opt

Optional: Install TinyOS from CVS

If you decided to use the bleeding edge from cvs. You can put it anywhere. Here I've chosen my home directory. You'll still have the official release in /opt. You'll also need to update your .bash_tinyos to reflect where you put it.

cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login
cvs -z3 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co tinyos-2.x
cvs -z3 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co tinyos-2.x-contrib

Java Serial Communications for TinyOS 1.x

You'll need to install TOSComm in order for your TinyOS 1.x Java toolchain to work. Yes, the TinyOS-tools package from TinyOS 2.x does this but it doesn't work for 1.x. And yes the two can coexist in your $JDKROOT.

The installer detects the wrong location to install the files to because of the alternatives setup. Edit the JAVADIR rule in the $TOSROOT/beta/TOSComm/comm/Makefile with (This is for your TinyOS 1 installation):

JAVADIR=/usr/lib/jvm/java-6-sun

Now install it. We'll alias g++ to the correct version so we don't have to edit anymore makefiles.

alias g++=g++-3.4; cd $TOSROOT/beta/TOSComm/comm; make
sudo make install

Compile Java Tools for TinyOS-1.x

You may need to (re)compile java tools such as teh Listener after getting the sources from CVS.

cd /opt/tinyos-1.x/tools/java
make


Compile Java Tools for TinyOS-2.x

You may need to (re)compile JNI libraries for TinyOS java SDK, for example, if you get the env JNI error after trying to start "java net.tinyos.tools.Listen"

cd /opt/tinyos-2.x/tools
sudo tos-install-jni 

If this does not help, see the README file in the same directory to configure and make.

Further reading

Now you are ready to work with TinyOS and motes.


Here are some tips on how to do that.