• No se han encontrado resultados

Estructura de directorios y archivos de ContikiOS

CAPÍTULO 2. HARDWARE DE LOS NODOS SENSORES Y SISTEMA OPERATIVO

2.4 Sistema Operativo Seleccionado: ContikiOS

2.4.2 Estructura de directorios y archivos de ContikiOS

Para el desarrollo de aplicaciones además de comprender el funcionamiento de ContikiOS, es necesario conocer la forma en la que se estructuran sus archivos. Todos los archivos y carpetas necesarios para el funcionamiento de este Sistema Operativo se encuentran dentro de la carpeta ContikiOS 2.7 en la raíz del Sistema Operativo. La estructura de los directorios de ContikiOS es la que se muestra en la figura 2.11.

Figura 2.11 Estructura de directorios de ContikiOS 2.7.

Como se puede apreciar en la figura 2.11 la estructura de directorios de ContikiOS se reduce a [4, 43, 49]:

 Apps: Contiene aplicaciones y programas auxiliares que se pueden usar en el programa principal. Este directorio agrupa tres tipos de aplicaciones. La primera y más numerosa son programas desarrollados cuando ContikiOS estuvo siendo usado como un Sistema Operativo para pequeñas computadoras de 8 bits en redes y servidores. En la segunda y tercera categorías, se encuentran implementaciones de la evolución actual de las WSN, como el antelope (una base de datos) y el erbium (una alternativa al protocolo http para los sistemas de recursos restringidos), y también herramientas para la depuración y optimización de aplicaciones.

 CPU: Incluye todas las librerías relacionadas con las propiedades del micro- controlador. Algunos ejemplos pueden ser la configuración de los timers, el módulo serial y la memoria flash.

 Doc: En este directorio se encuentran toda la documentación técnica relacionada con el Sistema Operativo.

 Examples: Contiene una variedad de ejemplos de programas.

 Platform: Contiene subdirectorios, asociados con los diferentes nodos y pequeñas computadoras para que los cuales ContikiOS ha sido configurado. Cada subdirectorio contiene un programa principal específico (fichero con extensión .c) para el funcionamiento de ContikiOS en el dispositivo correspondiente. Contiene también un archivo de configuración para dispositivos específicos (llamado ContikiOS-conf.h) que se puede editar para seleccionar el software que se incluirá en ContikiOS.

 Tools: En este directorio se encuentran varias herramientas extras que no forman parte del Sistema Operativo ContikiOS. Estas herramientas de software son programadas en Java para simular y analizar WSN, como por ejemplo COOJA y Collect View.

 Regression-tests: Contiene un conjunto de pruebas que chequean aspectos importantes de ContikiOS diariamente.

 Core: Define el funcionamiento del Sistema Operativo. Este directorio contiene las partes más esenciales de ContikiOS en subdirectorios independientes:

sys: Contiene todas las funciones responsables de la administración de procesos, interrupciones y temporizadores.

dev: Es un conjunto de archivos de cabecera y drivers para la salida y entrada de dispositivos comúnmente usados en nodos y en pequeños sistemas embebidos.

net: Grupo de software relacionado para comunicaciones entre nodos. Además, contiene un largo número de cabeceras y archivos de programa. Dentro de él se encuentran los tres subdirectorios mac, rime y rpl. El primero de estos, agrupa todos los programas que pertenecen a la capa MAC. El subdirectorio rime contiene un conjunto de aplicaciones para comunicaciones unicast y de difusión, además contiene la distribución multisalto en la red. El

último de estos subdirectorios proporciona una implementación del protocolo de ruteo RPL para IoT.

cfs: Contiene el sistema de archivo ContikiOS, en gran parte inspirado para el sistema de archivos de Linux.

ctk: Proporciona una interfaz gráfica para ContikiOS.

lib: Es una colección de bibliotecas para diversas aplicaciones, contiene varias funciones codificadas.

loader: Proporciona una reubicación para archivos en el Executable Linkable Format (ELF) usado en Linux. Este subdirectorio es construido en dos partes, una independiente de la CPU y otra adaptada para CPU específicas.

Además de estas carpetas en la raíz de ContikiOS se encuentran una serie de archivos como LICENSE en el que se explican algunos aspectos de interés para los usuarios acerca de la licencia de este Sistema Operativo. También se encuentran los archivos de texto README, README-BUILDING y README-EXAMPLES, que explican algunas características del Sistema Operativo y una serie de primeros pasos para comenzar a trabajar con ContikiOS. En la figura 2.11 también se puede encontrar el fichero Makefile.include. Este fichero contiene las reglas necesarias para compilar una aplicación. Está compuesto por un conjunto de dependencias y reglas. Estas dependencias son el fichero objetivo (target), y un conjunto de ficheros fuente de los cuales depende el fichero objetivo. Además de este Makefile.include en ContikiOS existen varios tipos de ficheros Makefile, a continuación, se mencionan de cada uno de ellos [65]:

Makefile de la aplicación: Es el fichero makefile de la aplicación a desarrollar.

Makefile.target: Este fichero incluye las reglas específicas para cada plataforma., donde target es el nombre de la plataforma en la que se va a compilar y cargar la aplicación.

Makefile.cpu: Este fichero incluye las reglas específicas para cada micro-controlador, donde cpu es el nombre del micro-controlador que usa la plataforma sobre la que se implementa la aplicación.

Makefile.app: Cada aplicación tiene su propio makefile e incluye las reglas para este tipo de aplicaciones, app es el nombre de la aplicación.

Casi todos estos ficheros makefile están ya incluidos en el sistema de ContikiOS excepto el de la aplicación a desarrollar. Este fichero siempre debe existir en el directorio donde se esté realizando un nuevo proyecto. Este es muy simple, únicamente debe especificar el directorio del fichero de la aplicación (directiva 1) y el principal archivo makefile de todo el sistema (makefile.include, referido a la directiva 6). Aunque también se pueden incluir otras directivas (directivas 2, 3, 4 y 5). A continuación, se muestran las directivas mencionadas: 1- Ruta del directorio donde se encuentra la aplicación, ya sea de forma relativa o absoluta:

 CONTIKIOS =../.. (relativo)

 CONTIKIOS = /home/user/ContikiOS/ (absoluto)

2- Plataforma para la cual se está compilando:

 TARGET=nombre_plataforma

3- Proyectos que se quieren compilar

 all: prueba

4- También se pueden crear definiciones de distintas banderas de ContikiOS:

 CONTIKIOS_WITH_IPV6 = 1

 CONTIKIOS_WITH_IPV4 = 1

5- Aplicaciones que se pueden incluir al proyecto (existe una gran variedad las cuales se encuentran en el directorio apps):

 APPS=collect-view

6- Ruta al archivo makefile con las directivas generales del Sistema Operativo:

 include $(CONTIKIOS)/Makefile.include

Las directivas 1 y 6 son obligatorias y si no se encuentran o contienen algún error el programa no compilará. El fichero makefile se encarga de llamar al resto de los ficheros makefile a partir de un TARGET que se le especifica en el momento de ejecutar la instrucción de compilar la aplicación mediante el siguiente comando:

make TARGET= nombre_plataforma nombre_aplicacion.upload

Las directivas 2, 3,4 y 5 no son estrictamente necesarias incluirlas en el makefile estas se pueden añadir a un fichero de configuraciones (project-conf.h) en la carpeta donde se encuentre la aplicación. En este archivo se define cualquier valor o bandera de compilación

[49]. Para lograr una correcta comunicación entre la aplicación, el makefile y el archivo project-conf.h es necesario añadir en el makefile de la aplicación la siguiente línea de código: DEFINES+=PROJECT_CONF_H=\"project-conf.h\"