TMI TinyOS Repository ===================== What is TinyOS -------------- TinyOS is a software development framework for building space and time efficient applications for deeply embedded systems, including wireless sensor networks. Some useful links: * [TinyOS Home Page](http://www.tinyos.net) * [TinyOS Documentation Wiki](http://docs.tinyos.net) Who is TMI ---------- Titanium Mirror, Inc. (TMI) is a software development conmpany specializing in computer network security, low power data acquisition, and highly available systems development. See our [Home Page](http://titaniummirror.com) for more information about our network security appliances. Contact us through the website to learn more about our embedded systems expertise. TMI's TinyOS Tree ----------------- This repository tracks the official TinyOS 2.x development, and incorporates TMI's contributed code providing various enhancements for msp430 based target systems. TMI's code base is actively developed, and targeted to the current release of TinyOS. Enough information is provided in this repository to cherry pick features for your own TinyOS development, to use the TMI framework complete. A focus is placed on stability, as this framework is the core for our own development efforts. Features in the TMI repository include: * Support for newer MSP430 chipsets, such as the MSP430F2617. The TMI tree requires a newer mspgcc v3.2.3 compiler; see below for more information. * An implementation for TI's USCI peripheral, used on newer MSP430 microprocessors in place of the older USART peripheral. This USCI implementation supports RS-232 and SPI communication, with future planned support for I2C. * Support for the newer basic clock + peripheral, and including a simpler clock framework for easily configuring an msp430 target for clock speeds other than the TinyOS 2.x default of 4MHz. * Support for a number of other hardware components, such as: * Silicon Labs cp2103 USB/serial adapter * Texas Instruments BQ2403x charge controller * VTI SCP1000-D01 barometric pressure sensor * A modularized programming tool for msp430, tos-bsl, which allows for simple expansion to new target device types. TMI has incorporated a module for targeting devices using the Silicon Labs cp2103 USB/Serial adapter chip for communications with a PC, including programming of the target microprocessor. * TMI is also soon to release two low power msp430-based embedded targets for use in a variety of data acquisition, robotics, and other applications. Support for these targets is also present within the TMI TinyOS tree. Using TMI's Ubuntu Packages =========================== TMI will soon be releasing its version of msp430 compiler tools, TinyOS tools, and our TinyOS source tree via Ubuntu Debian packages available on Launchpad. TMI manages infrastructure in-house to package for our internal developers, who run Ubuntu versions Hardy and Karmic on both 32-bit and 64-bit x86 systems. When we release a public apt archive via a Launchpad PPA, other users of Ubuntu derived operating systems will be able to easily install and keep up to date their TinyOS development tools. Stay tuned! The Repository Structure ======================== The structure of TMI's TinyOS git repository is a bit complex. Here are the highlights: * The TMI repository slowly tracks all changes from the official TinyOS CVS repository in its branch __upstream__. * CVS tags for released versios of TinyOS are replicated in the TMI repository. For example, the CVS tag for release 2.1.0 is __release_tinyos_2_1_0_0__. For auditability, the CVS release tags are imported into the TMI repo unchanged. * Because of the differences between CVS and git's handling of tags, a checkout of a CVS tag from git can provide different code than the same tag checked out from CVS. This happened with __release_tinyos_2_1_0_0__ as an example. The TMI tree resolves this by also posting a second tag for each release, of the form tinyos/version, to which the actual CVS checkout is posted. For example, the 2.1.0 git release tag is __tinyos/2.1.0__. * New development is done on the __master__ branch, which is merged to the the latest official TinyOS release shortly after its release. * Periodically, TMI will release its custom code, based off the most recent official TinyOS release. This is done by committing changes from branch to a release branch of the form release/vrsion. The release branch for TinyOS 2.1.0 is __release/2.1.0__. As each new version of TMI code is posted to the branch, it is tagged. For example, version 2 of the TMI code on the 2.1.0 TinyOS release is tagged __release/2.1.0/2__. * Many of TMI's enhancements we consider generally useful, and we strive to get these changes considered for incorporation into the official TinyOS tree. Therefore, the repository will contain patchset tags, each tagging the head of a series of patches representing an uncluttered and clean view of the TMI enhancements. Patchset tags take the form patchset/tosver/tmiver, where tosver is the upstream TinyOS version and tmiver is the TMI code version. For example, patches for TMI code version 2 against the TinyOS 2.1.0 release is tagged __patchset/2.1.0/2__. When we rebase a patchset against the upstream head, we use a datecode for tosver. So patchset version 2 against the TinyOS tree as seen at midnight on 11/30/09 would be tagged __patchset/20091130/2__. Submitting Enhancements ======================= You may submit changes back to this tree via e-mail or via a publicly accessible git repository. Simply track our master branch and rebase any changes you publish against it. License ======= All of TMI's source code is licensed per the BSD style license used by the upstream TinyOS repository. Certain files imported from upstream may use other licenses or offer secondary licenses. Check the individual files for details.