TinyOS es una plataforma y un sistema operativo integrado y basado en componentes para dispositivos inalámbricos de bajo consumo, como los que se utilizan en redes de sensores inalámbricos (WSN), polvo inteligente , computación ubicua , redes de área personal , automatización de edificios y medidores inteligentes . Está escrito en el lenguaje de programación nesC, como un conjunto de tareas y procesos cooperativos. Comenzó como una colaboración entre la Universidad de California, Berkeley , Intel Research y Crossbow Technology , se lanzó como software gratuito y de código abierto bajo unLicencia BSD , y desde entonces se ha convertido en un consorcio internacional, TinyOS Alliance .
![]() | |
Desarrollador | Alianza TinyOS |
---|---|
Escrito en | nesC |
Familia OS | Sistemas operativos integrados |
Estado de trabajo | Actual |
Modelo fuente | Fuente abierta |
Versión inicial | 2000 |
Último lanzamiento | 2.1.2 / 20 de agosto de 2012 |
Repositorio | ![]() |
Objetivo de marketing | Sensor de redes inalámbricas |
Disponible en | inglés |
Licencia | BSD |
Página web oficial | github |
TinyOS se ha utilizado en el espacio, siendo implementado en ESTCube-1 .
Implementación
Las aplicaciones de TinyOS están escritas en el lenguaje de programación nesC , un dialecto del lenguaje C optimizado para los límites de memoria de las redes de sensores. Sus herramientas complementarias se encuentran principalmente en forma de interfaces de usuario de script de shell y Java . Las bibliotecas y herramientas asociadas, como el compilador nesC y las cadenas de herramientas Atmel AVR binutils, están escritas principalmente en C.
Los programas de TinyOS están construidos con componentes de software , algunos de los cuales presentan abstracciones de hardware. Los componentes se conectan entre sí mediante interfaces . TinyOS proporciona interfaces y componentes para abstracciones comunes, como comunicación de paquetes, enrutamiento, detección, activación y almacenamiento.
TinyOS no bloquea completamente : tiene una pila de llamadas . Por lo tanto, todas las operaciones de entrada / salida (E / S) que duran más de unos pocos cientos de microsegundos son asincrónicas y tienen una devolución de llamada . Para permitir que el compilador nativo optimice mejor los límites de las llamadas, TinyOS utiliza las funciones de nesC para vincular estas devoluciones de llamada, llamadas eventos, de forma estática. Si bien la ausencia de bloqueo permite a TinyOS mantener una alta concurrencia con una pila, obliga a los programadores a escribir lógica compleja uniendo muchos controladores de eventos pequeños. Para admitir cálculos más grandes, TinyOS proporciona tareas, que son similares a una llamada a procedimiento diferido y las mitades inferiores del controlador de interrupciones . Un componente de TinyOS puede publicar una tarea, que el sistema operativo programará para ejecutarse más tarde. Las tareas no son preventivas y se ejecutan primero en entrar, primero en salir . Este modelo de simultaneidad simple suele ser suficiente para aplicaciones centradas en E / S, pero su dificultad con las aplicaciones con uso intensivo de CPU ha llevado al desarrollo de una biblioteca de subprocesos para el sistema operativo, denominada TOSThreads. TOSThreads no se mantienen y han quedado obsoletos. [1]
El código de TinyOS está vinculado estáticamente con el código del programa y se compila en un pequeño binario, utilizando una cadena de herramientas GNU personalizada . Se proporcionan utilidades asociadas para completar una plataforma de desarrollo para trabajar con TinyOS.
Historia
TinyOS comenzó como un proyecto en UC Berkeley como parte del programa DARPA NEST. Desde entonces, ha crecido hasta involucrar a miles de desarrolladores y usuarios académicos y comerciales en todo el mundo. (lista en orden cronológico inverso)
- Agosto de 2012: lanzamiento de TinyOS 2.1.2
- Abril de 2010: lanzamiento de TinyOS 2.1.1.
- Agosto de 2008: lanzamiento de TinyOS 2.1.0.
- Julio de 2007: lanzamiento de TinyOS 2.0.2. Comienza el trabajo en TinyOS 2.1, que implica ligeros cambios en algunas interfaces.
- Abril de 2007: TinyOS 2.0.1 lanzado en el 4º TinyOS Technology Exchange en Cambridge, MA.
- Noviembre de 2006: TinyOS 2.0 lanzado en la conferencia SenSys en Boulder, CO.
- Julio de 2006: lanzamiento de TinyOS 2.0 beta2.
- Febrero de 2006: TinyOS 2.0 beta1 lanzado en el tercer TinyOS Technology Exchange en Stanford, CA.
- Diciembre de 2005: se lanza TinyOS 1.1.15, la última versión 1.1.
- Julio de 2005: concluye el proyecto NEST.
- Junio de 2004: Se forma un grupo de trabajo sobre los próximos pasos para TinyOS, basado en experiencias de portabilidad a nuevas plataformas. El grupo acepta comenzar a trabajar en 2.0.
- Septiembre de 2003 - diciembre de 2005: TinyOS comienza un proceso de lanzamiento menor periódico.
- Agosto de 2003: se lanza la versión 1.1 de TinyOS, que incluye nuevas funciones de nesC, incluida la detección de carreras de datos.
- Septiembre de 2002: Se lanza la versión 1.0 de TinyOS, implementada en nesC.
- Abril de 2002: El trabajo en el lenguaje de programación nesC comienza como una colaboración entre Intel Research y UC Berkeley.
- Febrero de 2002: Berkeley distribuye 1000 nodos de mica a otros participantes en el proyecto NEST.
- 2001: Berkeley desarrolla la plataforma mica y lanza la versión 0.6 de TinyOS.
- 2000: Berkeley diseña la plataforma rene y se asocia con Crossbow, Inc., que produce en masa el hardware. La versión 0.43 de TinyOS está disponible para el público a través de SourceForge. Las versiones anteriores a la 1.0 de TinyOS son una combinación de scripts C y Perl .
- 1999: Se desarrollan la primera plataforma TinyOS (WeC) y las implementaciones de SO en Berkeley.
Entornos de desarrollo integrados
A partir de 2010, hay tres entornos de desarrollo integrados (IDE) disponibles para TinyOS, como complementos para Eclipse :
- YETI 2 , ETH Zürich (desarrollo detenido)
- XPairtise por Rasmus Pedersen, Escuela de Negocios de Copenhague
- TinyDT , Universidad de Vanderbilt
Referencias
- ^ "El repositorio de desarrollo de TinyOS TOSThreads en desuso" . Repositorio de desarrollo actual de TinyOS . Consultado el 3 de diciembre de 2018 .
enlaces externos
- TinyOS en GitHub
- TinyOS en Curlie