TinyOS is an open source - the operating system for wireless sensor networks . It is an open source software system, which is largely under the BSD license . It now exists in two stable versions, TinyOS 1.1.15 and TinyOS 2.0.1, whereby version 2.x has been completely revised and has eliminated the disadvantages of the predecessor. These versions are not compatible with each other; H. existing applications must be revised.
It was developed at the University of Berkeley (California, USA) by Dr. David Culler and later developed further mainly by the open source community. In the meantime, an alliance, similar to the ZigBee Alliance, has been formed, which includes private individuals, organizations and companies from research, the service sector and industry. TinyOS has gained widespread use in the research community.
TinyOS uses a component-based architecture and an event-driven concurrency model. At the same time, it also represents a development environment and programming platform especially for hardware systems with scarce resources in terms of memory, computing power and energy use, which must function reliably and autonomously over periods of months or years.
The "philosophy" of the operating system is to work through the pending work as quickly as possible in order to then send the hardware to sleep mode. TinyOS achieves the implementation of this concept through an event-driven execution of the program parts, which are divided into components, which are called via two-phase operations and therefore do not require an additional stack for intermediate storage.
TinyOS was originally written in the C programming language. But the special area of application made it necessary to design a new programming concept that could optimally support the operating system. For this purpose, the programming language nesC was created, which in turn was developed so tailor-made for the programming of sensor nodes that TinyOS was revised again and completely reimplemented in nesC. The special operating system architecture is thus optimally supported.
For application development, individual components for the respective application area of the sensor nodes are linked to one another and thus ultimately form a complete application that is uploaded to the target hardware via the UISP interface or via over-the-air programming (OTAP). Elementary components encapsulate hardware components such as the radio interface or the timer and thus form the lowest level in a hierarchical component model, which is referred to as the Hardware Abstraction Layer (HAL). In TinyOS and nesC there are two types of components: Modules implement the individual functions of the interfaces (between the components) and configurations use the interfaces to describe how the individual components are connected to one another.
In addition to integrable components (communication via UISP, timer, scheduler, etc.) and the provided nesC compiler / linker, TinyOS offers a hardware and network simulator (TOSSIM), tools for source code documentation and visualization ( Graphviz ), as well as Sample applications in Java such as “SerialForwarder” or the “Surge” program for network connection analysis.