Repositories: tinyos, deputy-tinyos, nesc, APT Repository.
Package versioning
The TinyOS packages are built from the TMI
TinyOS repository. The
package version number is of the form tosver-tmiver
, where tosver
is the
official TinyOS release version on which the code is based, and tmiver
is the
version of the modifications applied by TMI. Released APT package versions are
associated with tags in the source code repository. Consider the latest
package version, 2.1.1-4.5, for which these tags exist in the repository:
debian/2.1.1-4.5-2tmi
is the tag of the 'debianized' code from which the APT packages version 2.1.1-4.5-2tmi were built.release/2.1.1-4.5
is the tag of the TinyOS code of whichdebian/2.1.1-4.5-2tmi
is a superset, the latter containing the debian packaging files.tinyos/2.1.1
is the official upstream release on whichrelease/2.1.1-4.5
is based, the difference being the TMI enhancements.patchset/2.1.1-4.5
is the head of a string of commits from thetinyos/2.1.1
tag that represent a clean patch series that applies the TMI enhancements to the official upstream release.
Multiple source trees
Often it is impractical to maintain older applications by porting them forward to the latest TinyOS version. The TMI approach allows multiple TinyOS trees to be installed simultaneously, thereby allowing different applications to be compiled against different TinyOS versions.
The official TinyOS installs the source tree at /opt/tinyos-2.x
. The TMI
version installs source trees at /opt/tinyos/VER
. For example, the latest
TMI tree is installed at /opt/tinyos/2.1.1-4.5
. TMI also maintains in its
repository the last few official source trees. At least one must be installed,
and the developer may install others as needed. When installing or upgrading
TMI TinyOS packages via APT, the latest TMI tree package is automatically
installed. Source the script /opt/tinyos/tinyos.sh
to set the tree you wish
to use. This script also updates your shell rc file (if running bash, ksh or
csh) so that your tree selection is persistent across logins.
For our development, however, we tend to use a local git checkout of our enhanced TinyOS tree locally instead. This allows for easy development within the TinyOS source in a convenient manner. The tinyos.sh script in the TMI tinyos package also supports this capability.
This is the currently available trees as of this writing. You can use the command shown below to at any time view the available source trees.
$ apt-cache search tinyos-source
tinyos-source - TinyOS source meta package
tinyos-source-2.0.1 - TinyOS source code tree, upstream release
tinyos-source-2.0.2.2 - TinyOS source code tree, upstream release
tinyos-source-2.1.0 - TinyOS source code tree, upstream release
tinyos-source-2.1.0-3 - TinyOS source code tree
tinyos-source-2.1.0-4 - TinyOS source code tree
tinyos-source-2.1.0-4.1 - TinyOS source code tree
tinyos-source-2.1.0-4.2 - TinyOS source code tree
tinyos-source-2.1.1-4.3 - TinyOS source code tree
tinyos-source-2.1.1-4.4 - TinyOS source code tree
tinyos-source-2.1.1-4.5 - TinyOS source code tree
TMI quit providing pristine packages after 2.1.0. Using any TinyOS source tree
not provided by TMI packages is easy. Simply source the /opt/tinyos/tinyos.sh
script with an argument of the directory containing the source tree.
Installing TinyOS
To install TinyOS, perform the steps shown for the APT Repository, then type:
sudo apt-get install tinyos
By default, the latest TinyOS source tree, with TMI enhancements, and the TMI MSP430 toolchain are installed. At this point, additional tinyos source trees may be installed as required. For example, to install the official upstream source version 2.1.0 without TMI enhancements:
sudo apt-get install tinyos-source-2.1.0
You may also install the MSP430 compiler for TinyOS by typing:
sudo apt-get install tinyos-msp430
tinyos-msp430 is a virtual package that conveniently pulls in the msp430 toolchain already present in standard Ubuntu repositories. TMI is doing no TinyOS work with Atmel AVR parts, so we are no longer maintaining the tinyos-avr virtual pacakge in our repository.