TinyOS 2.0, un sistema operativo libre para dispositivos empotrados

embeddedArco
Por que no sólo de GNU/Linux vive el hombre, vamos a describir brevemente la instalación y el uso de un sistema operativo libre denominado TinyOS. Este sistema operativo esta destinado a redes inalámbricas de sensores por lo que necesitaremos para probarlo alguna de las plataformas soportadas por el sistema operativo o el simulador TOSSIM.

Instalación TinyOS 2.0


Vamos a aprender su instalación y dejaremos para más adelante la construcción de un pequeño hello world o incluso la instalación del propio simulador.

Se va a instalar todo en una debian con kernel 2.6.15.7

Los pasos a seguir son los siguientes (http://www.tinyos.net/tinyos-2.x/doc/html/install-tinyos.html):

JDK

Instala Java 1.5 JDK. Se necesita para comunicarse con el nodo desde el PC.

Compilador cruzado

Esto va a depender del dispositivo para el cual quieras desarrollar una aplicación y concretamente del procesador con el que estén desarrollados. Por ejemplo, para la familia de las MICAs (dispositivos para redes de sensores) se necesita la toolchain AVR, ya que llevan unos procesadores ATMEL. En la receta supondremos que vamos a trabajar con estas motas, por lo que instalamos todo lo relativo a la citada toolchain. En debian esto implica, instalar los siguientes paquetes:

  • gcc-avr, el gcc para los atmel
  • gdb-avr, el gdb para los atmel
  • binutils-avr, utilidades binarias.
  • avr-libc, la librería estándar de C
  • avarice, para utilizar el gdb con JTAG (sistema para depuración típico de sistemas empotrados)

Si peiensas utilizar el apt-get para instalar todo eso será mejor que eches un vistazo a esta página de tinyOS. En resumen dice que no es buena idea, ya que necesitamos versiones muy concretas. Lo mejor es bajarse los rpm y pasar los paquetes a .deb con alien, para luego instalarlos. Un tema importante, primero desinstala todo lo que tengas de avr y no te olvides de bloquear todos los paquetes para que no se actulicen cuando hagas un “upgrade”.

Una vez que tengas los compiladores cruzados (necesarios para compilar el sistema operativo TinyOS) necesitas el compilador de nesC. nesC es el lenguaje en el que está escrito tiniyOS y que se usa también para escribir las aplicaciones. En la página web tienes paquetes rpm para el nesC (que usará los compiladores y para la toolchain de tinyOS por lo que, como esto en una debian tienes que tirar de alien para convertir los paquetes.

# alien nesc-1.2.7a-1.i386.rpm
nesc_1.2.7a-2_i386.deb generated

  1. alien tinyos-tools-1.2.2-1.i386.rpm
    tinyos-tools_1.2.2-2_i386.deb generated

y luego ya sabes: dpkg -i <paquete generado>

Con alien tendrás este problema:

# alien tinyos-tools-1.2.2-1.i386.rpm
Warning: Skipping conversion of scripts in package tinyos-tools: postinst prerm
Warning: Use the —scripts parameter to include the scripts.
tinyos-tools_1.2.2-2_i386.deb generated

  1. dpkg —force-overwrite -i tinyos-tools_1.2.2-2_i386.deb
    (Leyendo la base de datos …
    161803 ficheros y directorios instalados actualmente.)
    Desempaquetando tinyos-tools (de tinyos-tools_1.2.2-2_i386.deb) …
    dpkg – aviso, no se tendrá en cuenta el problema por estar activa
    una opción —force:
    intentando sobreescribir `/usr/share/man/man1/uisp.1.gz’, que está también en el paquete uisp
    dpkg – aviso, no se tendrá en cuenta el problema por estar activa
    una opción —force:
    intentando sobreescribir `/usr/bin/uisp’, que está también en el paquete uisp
    Configurando tinyos-tools (1.2.2-2) …

El sistema operativo

Un paso similar se realiza para instalar el sistema operativo propiamente dicho, es decir el tinyOS. Se coge el paquete .rpm se pasa a .deb con alien y se instala con el dpkg.

Configuración del entorno

Configurar las variables de entorno (mételo en un script para configurarlo de forma automática), por ejemplo en ~/bin/tinyos-setup.sh:

export TOSROOT=/opt/tinyos-2.x  
export TOSDIR=$TOSROOT/tos
export CLASSPATH=$CLASSPATH:$TOSROOT/support/sdk/java/tinyos.jar:.
export MAKERULES=$TOSROOT/support/make/Makerules

Y ejecuta lo siguiente cuando vayas a compilar para TinyOS:

$ . ~/bin/tinyOS.sh

Cambia el propietario del directorio donde esta el tinyOS:

$ chown -R felix /opt/tinyos-2.x

y no olvides cambiar los permisos del dispositivo (puerto serie, paralelo, USB) que uses para comunicarte con las motas.

chmod 666 /dev/

graphviz

Instalar Graphviz desde su paquete debian correspondiente con

# apt-get install graphviz

Probando

Bueno, enhorabuena, si has hecho todos estos pasos, ya tienes el tinyOS instalado en tu ordenador, ahora necesitas probar todo esto que hemos hecho. No está de más echarle un vistazo a la estructura general del SO para entender como está estructurado y sus posibilidades.

La mejor forma de ver si todo esta correctamente instalado es tratar de compilar y probar algunas de las aplicaciones de ejemplo que vienen con el propio sistema operativo. Como ya habrás notado el sistema operativo se ha instalado por defecto en el directorio /opt/tinyos-2.x

Dentro de este directorio a su vez puedes encontrar los siguientes directorios:

  • apps: Aplicaciones de ejemplo del tinyOS
  • support: código fuente del toolchain
  • tos: el sistema operativo propiamente dicho.

Puedes probar que todo está correcto compilado una aplicación de prueba que viene con el sistema. Copia el directorio apps/Null a algún sitio de tu home. Este directorio es un esqueleto de aplicación para tinyOS, que si bien no hace nada útil, te permite comprobar que has realizado correctamente todos los pasos anteriores.

Dentro de ese directorio, ejecuta el siguiente comando:

$ make

donde plataforma_destino puede ser uno de los siguientes:

 Valid targets: all clean eyesIFX eyesIFXv1 eyesIFXv2 intelmote2 mica2 mica2dot micaz null telos telosb tinynode tmote

que son plataformas hardware disponibles en el mercado (la mayoría de ellos como prototipos) para redes de sensores inalámbricas.

Tiny-OS en Windows

Con el cd de crosbow es muy windoze, ejecutar el instalador y ya sabeis, yes yes yes, I agree, yes yes Smiling

Enlaces

———————————————————-
felixjesus.villanueva(la arroba)uclm.es
Mi web

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de david.villa

Repo Debian/Ubuntu para TinyOS

Y para ahorrarse todo, esto puedes usar el nuevo repo que han puesto los chicos de TOS. Lo he probado y funciona.

http://www.tinyos.net/scoop/story/2007/3/1/142950/4912

Y una ubuntu live con TinyOS 2.0:

http://toilers.mines.edu/Public/XubunTOS

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.