Difference between revisions of "Installing TinyOS 2.0.2"
(added support for iMote2) |
(→Step 3: Install native compilers) |
||
Line 157: | Line 157: | ||
− | <p></p><b><em>PXA27x Tools</em></b> | + | <p></p><b><em>PXA27x Tools (iMote2)</em></b> |
<table border="0"> | <table border="0"> | ||
<tr> | <tr> |
Revision as of 13:18, 30 May 2008
Installing TinyOS 2.0.2
If you already have a 1.x tree or an existing 2.x tree, you can use the upgrade instructions at [1], with the added note that Cygwin should be upgraded to the latest version. In cygwin run "cygcheck -c" and check the cygwin entry is 1.5.25-11 or later. As of Apr08, Cygwin is not supported on Windows Vista.
There are two ways to do a clean install of TinyOS. The first way is to install a live CD that gives you a virtualized Linux with a complete TinyOS install. Note that since this is on a CD, you can't modify anything; you can, however, make a LiveUSB device to use as your TinyOS install. The second way is to install TinyOS on your host operating system. When installing on a host operating system, you can either use a debian package repository or manually instally with RPMs.
Contents
One-step Install with a Live CD
Download a Linux live CD that has a TinyOS installation on it. All you need to do is download the CD image, burn it onto a CD, and install from there. This saves you all of the complexities of installation, and it's the recommended way to install TinyOS. The link above has complete instructions. The live CD is provided by the Toilers group at the Colorado School of Mines.
Two-step install on your host OS with Debian packages
If you are running a version of Linux that supports Debian packages, then you may want to use the TinyOS package repository. There is a story on www.tinyos.net that describes how to use it. If you do this, then you do not have to install the instructions here, except that you will need to check that your environment is set up correctly (the end of step 5 in the manual installation.
Manual installation on your host OS with RPMs
Currently, the TinyOS Core Working Group supports TinyOS on two platforms: Cygwin (Windows) and Linux. There have been some successful efforts to getting TinyOS environments working on Mac OSX, but OSX is not supported by the Core WG.
Installing a TinyOS enviromnent has five basic steps; Windows requires an extra step, installing Cygwin, which is a UNIX-like environment. The steps are:
- Installing a Java 1.5 (Java 5) JDK. Java is the most common way of interacting with mote base stations or gateways that are plugged into a PC or laptop.
- Windows only. Install Cygwin. This gives you a shell and many UNIX tools which the TinyOS environment uses, such as perl and shell scripts.
- Installing native compilers. As you're compiling code for low-power microcontrollers, you need compilers that can generate the proper assembly code. If you using mica-family motes, you need the AVR toolchain; if you're using telos-family motes, you need the MSP430 toolchain.
- Installing the nesC compiler. TinyOS is written in nesC, a dialect of C with support for the TinyOS concurrency model and component-based programming. The nesC compiler is platform-independent: it passes its output to the native compilers, so that it can take advantage of all of the effort put into their optimizations.
- Installing the TinyOS source tree. If you want to compile and install TinyOS programs, you need the code.
- Installing the Graphviz visualization tool. The TinyOS environment includes nesdoc, a tool that automatically generates HTML documentation from source code. Part of this process involves drawing diagrams that show the relationships between different TinyOS components. Graphviz is an open source tool that nesdoc uses to draw the diagrams.
Step 1: Install Java 1.5 JDK
Windows Download and install Sun's 1.5 JDK from http://java.sun.com.
Linux Download and install IBM's 1.5 JDK from http://www-128.ibm.com/developerworks/java/jdk/.
Step 2: Install Cygwin
This step is required for Windows installations only. If you are installing on Linux, skip to step 3.
We have put online the cygwin packages that we've confirmed to be compatible with TinyOS. The instructions below use those packages. You can also upgrade your cygwin environment according to the instructions at www.cygwin.com and your environment will most likely work. A large number of TinyOS users, upgrade their cygwin packages at least monthly from cygnus. However, since we can't test what packages are compatible as they become available daily, we can't confirm that today's set will work.
- Download cygwin-files.zip and unzip it under some local folder say c:/cygwin-files
- Go to c:/cygwin-files and start the setup. Use following instructions.
- When it ask for "Choose A download source", then use "Install from Local Directory" option
- When it ask for "Select Root Install Director" then use following options.
- Root Directory: c:\cygwin (or some other directory without spaces in its name)
- Install for: All Users
- Default Text file type: Unix/Binary
- When it ask for "Select local Package directory" then select "c:/cygwin-files" (Note: this location depends on where you have unzip cygwin-files.zip, in step-1 above we have used c:/cygwin-files)
- Complete the rest of installation process
- You might see a message explaining that you need to reboot because some files are in use. This most likely means that your cygwin DLL is loaded and in-use and, therefore, cannot be replaced. When you reboot, the new DLL will be loaded.
- Related to the above warnings, if you see warnings about the cygwin1.dll not being found, don't worry. All will be well once you reboot and the right DLL is loaded.
- Install tinyos-2.x
TinyOS 2.x
<tbody> </tbody>Windows/Cygwin Linux TinyOS tinyos-2.0.2-2.cygwin.noarch.rpm tinyos-2.0.2-2.noarch.rpm - Configure your environment
Ideally, you'll put these environment variables in a shell script that will run when your shell starts, but you needn't put such a script under /etc/profile.d.
The example settings below assume that the tinyos-2.x installation is in /opt/tinyos-2.x. Change the settings to be correct for where you've put your tinyos-2.x tree. Note that the windows CLASSPATH must be a windows-style path, not a cygwin path. You can generate a windows style path from a cygwin-style path using 'cygpath -w'. For example:
export CLASSPATH=`cygpath -w $TOSROOT/support/sdk/java/tinyos.jar` export CLASSPATH="$CLASSPATH;."
TinyOS 2.x
<tbody></tbody>Environment Variable Windows Linux TOSROOT /opt/tinyos-2.x same as in Cygwin TOSDIR $TOSROOT/tos same as in Cygwin CLASSPATH C:\tinyos\cygwin\opt\tinyos-2.x\support\sdk\java\tinyos.jar;. $TOSROOT/support/sdk/java/tinyos.jar:. MAKERULES $TOSROOT/support/make/Makerules same as in Cygwin PATH† /opt/msp430/bin:/opt/jflashmm:$PATH same as in Cygwin †Only necessary if you're using MSP430 or iMote2 platform/tools.
In addition to the above environment variables, do the following on Linux machines:
- Change the ownership on your /opt/tinyos-2.x files:
chown -R <your uid> /opt/tinyos-2.x
- Change the permissions on any serial (/dev/ttyS<N>), usb
(/dev/tts/usb<N>, /dev/ttyUSB<N>), or parallel (/dev/parport) devices you
are going to use:
chmod 666 /dev/<devicename>
- Change the ownership on your /opt/tinyos-2.x files:
Finally, if you have installed TinyOS 2.0.1, there is a bug in TOSSIM (which will be fixed in 2.0.2). The bug is in file tos/chips/atm128/sim/atm128_sim.h. Change these lines 22 and 23 from:
#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + 0x20) #define _SFR_IO16(io_addr) _MMIO_WORD((io_addr) + 0x20)
to
#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr)) #define _SFR_IO16(io_addr) _MMIO_WORD((io_addr))
If you do not do this, then timers will not work correctly.
Step 3: Install native compilers
Install the appropriate version of the following (Windows or Linux, avr or msp430 or both) with the rpm command 'rpm -ivh rpm>'. On windows, if you get an error claiming that the rpm was build for an NT computer and you're on a windows NT computer, bypass the erroneous error by using 'rpm -ivh --ignoreos rpmname'.
Atmel AVR Tools
<tbody> </tbody>Tool | Windows/Cygwin | Linux |
avr-binutils† | avr-binutils-2.15tinyos-3.cygwin.i386.rpm | avr-binutils-2.15tinyos-3.i386.rpm |
avr-gcc | avr-gcc-3.4.3-1.cygwin.i386.rpm | avr-gcc-3.4.3-1.i386.rpm |
avr-libc | avr-libc-1.2.3-1.cygwin.i386.rpm | avr-libc-1.2.3-1.i386.rpm |
avarice | avarice-2.4-1.cygwin.i386.rpm | avarice-2.4-1.i386.rpm |
insight (avr-gdb) | avr-insight-6.3-1.cygwin.i386.rpm | avr-insight-6.3-1.i386.rpm |
†If you receive an rpm error that indicates that you have a newer version already installed, try rpm -Uvh --force
Tool | Windows/Cygwin | Linux |
xscale-elf-binutils | xscale-elf-binutils-2.15tinyos-1.cygwin.i386.rpm | xscale-elf-binutils-2.15-2.i386.deb |
xscale-elf-gcc | xscale-elf-gcc-3.4.3-1.cygwin.i386.rpm | xscale-elf-gcc-3.4.3-2.i386.deb |
xscale-elf-newlibc | xscale-elf-newlib-1.11.0tinyos-1.cygwin.i386.rpm | xscale-elf-newlib-1.13.0-1.i386.deb |
jtag | jflashmm.tgz† | OpenOCD toolchain |
†Copy jflashmm.tgz to /opt directory, untar it (tar xzf jflashmm.tgz), and make sure it's on your path (see Step 5).
Step 4: Install TinyOS toolchain
The TinyOS-specific tools are the NesC compiler and a set of tools
developed in the tinyos-2.x/tools source code repository. They are
also installed using rpms. If you using the Cygwin version recommended
in these install
instructions, you should install the "Recommended" Windows/Cygwin
nesC RPM.
If you
get strange errors when you try to compile TinyOS programs,
such as the error message "the procedure entry point basename could not be located
in the dynamic link library cygwin1.dll", this is likely due
to a Cygwin version incompatibility: try the "Other" Windows/Cygwin
RPM (1.2.7a).
If you are using Cygwin and installing the nesC RPM
causes an error that the RPM was built for Cygwin,
add the --ignoreos
option.
Finally, there are two Linux versions of tinyos-tools, depending on whether you have a 32-bit or 64-bit machine. The first is the i386 RPM and the second is the i686 RPM. If you have a 64-bit Java VM, it is important that you install the i686 RPM or otherwise the Java support may not work properly.
TinyOS-specific Tools
<tbody> </tbody>Tool | Recommended Windows/Cygwin | Other Windows/Cygwin | Linux | Command |
NesC | nesc-1.2.8a-1.cygwin.i386.rpm | nesc-1.2.8b-1.cygwin.i386.rpm> | nesc-1.2.8a-1.i386.rpm | rpm -Uvh rpm -Uvh --ignoreos (if Cygwin complains) |
Tool | Windows/Cygwin | 32-bit Linux | 64-bit Linux | Command |
tinyos-tools | tinyos-tools-1.2.4-2.cygwin.i386.rpm | tinyos-tools-1.2.4-3.i386.rpm | tinyos-tools-1.2.4-3.i686.rpm | rpm -ivh --force (1.x tree)rpm -Uvh (no 1.x tree) |
Step 5: Install the TinyOS 2.x source tree
Now that the tools are installed, you need only install the tinyos 2.x source tree and then set your environment variables. Install the appropriate version of the following (Window or Linux) with the rpm command 'rpm -ivh rpm'. As with the previous rpms, if you get an error claiming that the rpm was build for an NT computer and you're on a windows NT computer, bypass the erroneous error by using 'rpm -ivh --ignoreos rpmname'.
Step 6: Installing Graphviz
Go to download page of the Graphviz project and download the appropriate RPM. You only need the basic graphviz RPM (graphviz-); you don't need all of the add-ons, such as -devel, -doc, -perl, etc. If you're not sure what version of Linux you're running,
uname -a
might give you some useful information. Install the rpm with rpm -i rpm-name. In the case of Windows, there is a simple install program, so you don't need to deal with RPMs.
you may need to download graphviz 1.1.0 here