2.3 Redes inal´ambricas de sensores

3.1.2 Software empotrado

Esta categor´ıa merece atenci´on especial ya que analiza las herramientas disponibles para producir el programa que se ejecutar´a en los nodos de la red inal´ambrica de sensores. Se le conoce como software empotrado a todo aquel programa que va integrado dentro de un dispositivo electr´onico, i.e. microcontrolador. El principal uso delsoftware empotrado no es en el campo de las tecnolog´ıas de informaci´on, sino m´as bien est´a pensando para interactuar con el mundo real. Estesoftware se escribe para sistemas que no son las t´ıpi- cas computadoras de escritorio que todo mundo conoce sino que el c´odigo binario queda inmerso en los circuitos electr´onicos que podemos encontrar en autos, tel´efonos, equipo de audio, robots, juguetes, sistemas de seguridad, marcapasos, televisiones aunque tambi´en es utilizado en aplicaciones muy sofisticadas como son aviones, misiles, sistemas de control industrial, entre otros [37].

Para poder realizar un an´alisis de las diversas opciones de software empotrado pri- mero debemos definir las arquitecturas de los procesadores utilizados en los nodos. Las arquitecturas de los procesadores para las cuales analizaremos las diversas opciones de he- rramientas de desarrollo son:Atmel AVR,Texas Instruments MSP430 yARM9. Con esta elecci´on cubrimos una gran cantidad de microcontroladores presentes en redes inal´ambri-

cas de sensores, tal y como fue descrito en la secci´on 3.1.1.

Los lenguajes de programaci´on disponibles para estas arquitecturas son: ensamblador, C y nesC. El lenguaje ensamblador es un lenguaje de bajo nivel utilizado para escribir programas y constituye la representaci´on m´as directa del c´odigo m´aquina espec´ıfico para cada procesador siendo este legible para un programador. El lenguaje C es un lenguaje estructurado de prop´osito general, aunque es muy com´un que este sea utilizado para escri- bir sistemas operativos y/o otras utiler´ıas debido a un gran potencia, adem´as de permitir manipulaciones a bajo nivel [35].nesC es un lenguaje de programaci´on para sistemas em- potrados en red como losmotes, adem´as implementa un modelo de programaci´on basado en la ejecuci´on de eventos. Este lenguaje soporta concurrencia y simplifica el desarrollo de la aplicaci´on, optimiza el tama˜no del c´odigo objeto y elimina fuentes de errores poten- ciales, como lo son la asignaci´on de memoria din´amica y la detecci´on de condiciones de carrera en tiempo de compilaci´on [28].

Lenguaje Ventajas Desventajas de Programaci´on

Ensamblador Control total Dif´ıcil de programar del dispositivo No hay portabilidad

C Facilidad de programar Eficiencia media-alta Gran portabilidad

nesC Portabilidad Eficiencia media Tabla 3.1: Lenguajes de programaci´on disponibles para todas las arquitecturas.

mencionar que los lenguajes listados en la tabla son soportados por todas las arquitec- turas analizadas en la presente secci´on. El lenguaje ensamblador es soportado por todas las arquitecturas, aunque cada arquitectura tiene su propia definici´on para este lenguaje, mientras que el lenguaje C y nesC son los mismos para cualquier arquitectura aunque podr´ıan existir diferencias m´ınimas dependiendo del compilador utilizado.

Aparte de los lenguajes de programaci´on disponibles para la programaci´on en redes inal´ambricas de sensores otro componente fundamental es el sistema operativo para los nodos. Estos sistemas son t´ıpicamente menos complejos que los sistemas operativos de prop´osito general dado los requerimientos especiales de las redes inalambricas de sensores y por que los recursos disponibles en estos dispositivos son claramente m´as limitados. En general las aplicaciones que utilizan nodos de sensores son menos interactivas que las aplicaciones para equipos de escritorio. Gracias a esto el sistema operativo no necesita incluir soporte para interfaces de usuario.

TinyOS es el primer sistema operativo espec´ıficamente dise˜nado para redes inal´ambri- cas de sensores, este sistema operativo tiene un modelo de programaci´on de aplicaciones orientado a eventos. Varias caracter´ısticas importantes que influyeron en el dise˜no denesC

incluyen: una arquitectura basada en componentes, un modelo de concurrencia simple ba- sado en eventos y las operaciones de fase dividida (split-phase) [31].

Contiki es un sistema operativo ligero con soporte para la carga din´amica de programas y servicios. Este sistema fue dise˜nado alrededor de un n´ucleo orientado a eventos pero de forma opcional provee multitarea preferente que puede ser aplicada a procesos individua- les [26].

MANTIS es un sistema orientado al bajo consumo de recursos, posee un planificador de tareas eficiente en cuestiones de energ´ıa, adem´as solo ocupa unos 500 Bytes de memoria

RAM y 14KB de memoria flash. Provee capacidades multitarea preferente. Se encuentra disponible para las plataformas deMICA2 y MICAz deCrossbow, entre otras [21].

LiteOS es un sistema operativo con abstracci´on de tipo UNIX, incluye un sistema de archivos jer´arquico y la posibilidad de interactuar con el sistemas a trav´es de una interfaz de comandos (shell) de forma inal´ambrica, el n´ucleo soporta la adici´on de m´odulos de forma din´amica y proporciona una ejecuci´on multitarea de forma nativa, los programas

se pueden realizar bajo el paradigma orientado a objetos [22].

In document Mecanismo seguro de recolección de datos utilizando nodos móviles en redes inalámbricas de sensores (página 37-40)