TinyOS
TinyOS ist ein Open-Source-Betriebssystem für drahtlose Sensornetze. Es handelt sich um ein quelloffenes Softwaresystem, welches größtenteils unter der BSD-Lizenz steht. Mittlerweile existiert es in zwei stabilen Versionen, TinyOS 1.1.15 und TinyOS 2.0.1, wobei Version 2.x komplett überarbeitet wurde und Nachteile des Vorgängers eliminiert hat. Diese Versionen sind zueinander nicht kompatibel, d. h. bestehende Anwendungen müssen überarbeitet werden.
Es wurde an der Universität Berkeley (Kalifornien, USA) von Dr. David Culler entwickelt und später vor allem durch die Opensource Community weiterentwickelt. Mittlerweile wurde eine Allianz, ähnlich der ZigBee-Alliance, gebildet, der Privatpersonen, Organisationen und Unternehmen aus Forschung, dem Dienstleistungssektor und der Industrie angehören. TinyOS hat eine große Verbreitung in der Forschungsgemeinde.
Technik
TinyOS nutzt eine komponentenbasierte Architektur (component-based architecture) und ein ereignisbasiertes Ausführungsmodell (event-driven concurrency model). Gleichzeitig stellt es auch eine Entwicklungsumgebung und Programmierplattform speziell für Hardwaresysteme mit knappen Ressourcen in Bezug auf Speicher, Rechenleistung und Energieverwendung dar, welche autonom und sicher über Zeiträume von Monaten oder Jahren zuverlässig funktionieren müssen.
Die „Philosophie“ des Betriebssystems ist es, die anstehenden Arbeiten so schnell wie möglich abzuarbeiten, um danach die Hardware in den Schlafmodus zu schicken. Die Umsetzung dieses Konzepts erreicht TinyOS durch eine ereignisgesteuerte Ausführung der in Komponenten (Components) gegliederten Programmteile, die über zweiphasige Operationen aufgerufen werden und somit keinen zusätzlichen Stack für das Zwischenspeichern benötigen.
Ursprünglich wurde TinyOS in der Programmiersprache C geschrieben. Doch das besondere Anwendungsgebiet machte es notwendig, ein neues Programmierkonzept zu entwerfen, welches das Betriebssystem optimal unterstützen konnte. Zu diesem Zweck wurde die Programmiersprache nesC geschaffen, welche wiederum so maßgeschneidert für die Programmierung von Sensorknoten entwickelt worden ist, dass TinyOS nochmals überarbeitet und komplett in nesC reimplementiert wurde. Somit wird die besondere Betriebssystem-Architektur optimal unterstützt.
Für die Anwendungsentwicklung werden einzelne Komponenten (Components) für das jeweilige Anwendungsgebiet der Sensorknoten miteinander verknüpft und bilden somit im Endeffekt eine komplette Applikation, die über die UISP-Schnittstelle oder mittels Over-the-air-programming (OTAP) auf die Zielhardware aufgespielt wird. Elementare Components kapseln Hardwarekomponenten wie etwa die Funkschnittstelle oder den Timer und bilden somit in einem hierarchischen Komponentenmodell die unterste Ebene, die als Hardware Abstraction Layer (HAL) bezeichnet wird. In TinyOS bzw. nesC gibt es zwei Arten von Components: Modules implementieren die einzelnen Funktionen der Schnittstellen (zwischen den Components) und Configurations beschreiben mit Hilfe der Schnittstellen wie die einzelnen Components miteinander verbunden sind.
TinyOS bietet von Haus aus neben einbindbaren Komponenten (Kommunikation über UISP, Timer, Scheduler etc.) und den bereitgestellten nesC-Compiler/-Linker einen Hardware- und Netzwerksimulator (TOSSIM), Hilfsmittel zur Sourcecode-Dokumentation und -Visualisierung (Graphviz), sowie Beispielapplikationen in Java wie etwa „SerialForwarder“ oder das Programm „Surge“ zur Netzwerkverbindungsanalyse.
Weblinks
- TinyOS auf GitHub (engl.)
- TinyOS-Artikel aus dem Magazin „sensors“ (englisch)