Blog sobre uso de Linux. Programación en C, C++, Python, y Java. Proyectos electrónicos.
miércoles, 13 de septiembre de 2017
RIoT Os - Primeros Pasos en Debian
Init:
Para comenzar con las primeras pruebas en Debian de este OS orientado a IoT, necesitaremos tener instalado el siguiente paquete:
# apt-get install bridge-utils
Luego clonamos el git:
$ git clone https://github.com/RIOT-OS/RIOT
Posteriormente nos situamos en el directorio RIOT/examples para crear nuestro primer proyecto.
Una vez dentro de RIOT/examples hacemos:
$ cp -R default miprimerriot
De esta manera copiamos todo el contenido de "default" a "miprimerriot", lo cual nos servirá de template para un primer uso.
Nos ubicamos en el directorio "miprimerriot" y abrimos el archivo Makefile
$ nano Makefile
Veremos el contenido del make, pero la línea que nos interesa es la siguiente:
# name of your application
APPLICATION = default
La línea anterior define el nombre del archivo como bien dice su título.
La cambiamos a:
# name of your application
APPLICATION = miprimerriot
Ahora cerramos el Makefile y abrimos el archivo main.c, siempre dentro de nuestro directorio "miprimerriot", y buscamos las siguientes líneas
char line_buf[SHELL_DEFAULT_BUFSIZE];
shell_run(NULL, line_buf, SHELL_DEFAULT_BUFSIZE);
Nos situamos en la línea shell_run, y modificaremos el argumento NULL y le pasaremos un array de shell_command_t, el cual contendrá el nombre del comando, una descripción del comando y la función a invocar cuando lancemos el comando por medio del shell interactivo de Riot.
En mi caso quedó así:
char line_buf[SHELL_DEFAULT_BUFSIZE];
shell_run(shell_commands, line_buf, SHELL_DEFAULT_BUFSIZE);
y previo a la definición de main en el mismo archivo insertaremos:
static int wakeUpNeo(int argc, char **argv) {
/* Suppress compiler errors */
(void)argc;
(void)argv;
printf("Wake up Neo...\n");
return 0;
}
const shell_command_t shell_commands[] = {
{"wake", "imprime Wake up Neo...", wakeUpNeo},
{ NULL, NULL, NULL }
};
Lo que se hizo es añadir al shell un comando llamado wake, que cuando lo invoquemos llamará a la función wakeUpNeo y por consola nos imprimirá "Wake up Neo...".
También se añadió un comando NULL,NULL,NULL, indicando el final de la lista de comandos.
Si bien no es un comando que realice una operación importante, es un buen punto de partida.
Estableciendo la red:
Como Riot está principalmente ideado para funcionar en red, necesitaremos crear una red virtual dentro de nuestra PC, para interconectar las distintas instancias de Riot.
Para esto las instancias de Riot necesitan de tap_devices. Cada Riot necesitará de un tap.
Luego para que cada tap se conecte, necesitará de un tapbridge, el cual unirá las instancias de Riot a través de su tap.
En el clon realizado del git ya disponemos de un script que creará el bridge y 2(dos) tap's para los primeros ensayos.
Nos situamos en el directorio y ejecutamos:
# .../RIOT/dist/tools/tapsetup/tapsetup -c
ello nos creará lo necesario.
Haciendo que haga...
Nos situaremos en el directorio de nuestro proyecto y lanzaremos (con los dedos cruzados):
$ make
Si todo fue bien tendremos dentro de nuestro proyecto a bin/native/miprimerriot.elf al cual ejecutaremos de la siguiente manera:
# ./bin/native/miprimerriot.elf tap0
Con lo anterior lo lanzamos y le asignamos el tap0.
Podríamos hacer lo propio con otra instancia:
# ./bin/native/miprimerriot.elf tap1
Luego de lanzada alguna instancia veremos una salida en consola de datos de inicialización y valores a analizar en otra entrada de blog.
Si presionamos enter y tipeamos "help" nos mostrará los comandos disponibles y entre ellos estará "wake" lo tipeamos y se ejecutará.
T'T
Este artículo se realizó siguiendo los pasos de la guía en inglés, publicada en la wiki de Riot en git
Suscribirse a:
Entradas (Atom)