Project

General

Profile

Esta wiki es de la version antigua pero fue dejada para referencia, muchas cosas ya no son validas, como el servidor bottle que ya no se usa.

Instalación Módulo de ABS

Guía de instalación de los scripts y servicios requeridos para los módulos de ABS.

Acceder en el Embebido

La comunicación se realiza por Telnet y se coloca el IP del módulo correspondiente:

$ telnet 192.168.1.XX
GESBC login: root
#

Scripts

Estos script deben localizarse en la ruta /abscontrol del sistema embebido:

  • abscontrol.py: aplicación web RESTful
  • abs_gpio.py: permite la lectura de pines siempre y cuando el embebido tiene en su sistema "gpio class"
  • bottle.py: scripts con las funciones necesarias para desarrollar un servicio RESTful
  • multicast_absmodule.py: levanta un servidor multicast que reenvía los comandos al "tcp_Control_Module"
  • tcp_Control_Module: servidor en C que configura los pines de salida del embebido
  • experimento1.ab1: el servidor en C solo se ejecuta si se le asigna un archivo ".ab1"
# cd /abscontrol
# ls
abscontrol.py    abs_gpio.py    bottle.py     bottle.py    multicast_absmodule.py
# cd /
# ls
tcp_Control_Module     experimento1.ab1

Los programas que deben correr en el embebido si se ingresa el comando "# top" son:

top2

Transferencia de archivos

Si el acceso a la memoria sd del embebido no está disponible, y solo se tiene acceso al embebido a través de "telnet", ejecutar los siguientes comandos:

En el embebido destino:

# nc -l -p 1234 > bottle.py

nc22

En la PC desde la carpeta con los archivos necesarios:

nc -w 3 192.168.1.XX 1234 < bottle.py

nc11

Actualización al Kernel 3.2.6 en el Sistema Embebido

Si en el sistema embebido el Kernel está desactualizado, no se encontrará "gpio class". Este es necesario para la lectura de pines. La imagen Kernel se obtiene a través de un servidor TFTP en caso no se encuentre dentro del dispositivo.

Servidor TFTP (PC Usuario)

  1. Instalación de servidor:
$ sudo apt-get install xinetd tftpd tftp
  1. Contenido del archivo "/etc/xinetd.d/tftp" (Crearlo si no existe)
    servidortftp1

  2. Creación de carpeta contenedora de archivos en serivdor tftp

$ sudo mkdir /tftpboot
  1. Copiamos los archivos imágenes en la carpeta tftboot y verificamos su contenido
$ cd tftpboot/
/tftpboot$ ls
hola.txt    uImage     uImage-3.2.6
  1. Se cambia el modo y propietarios de "/tftpboot"
$ sudo chmod -R 777 /tftpboot
$ sudo chown -R nobody /tftpboot
$ ls -al
.
.
.
dr-xr-xr-x           sys
drwxrwxrwx           tftpboot
drwxrwxrwt           tmp
.
.
.
  1. Se reinicia el servicio
$ sudo service xinetd restart
xinetd stop/waiting
xinetd start/running, process 5286

En el embebido (Módulo ABS)

  1. Encender el sistema embebido con conexión serial y ethernet (velocidad 115200 bps) (si se ingresa por putty: ttyUSB0)

  2. En la consola por serial esperar carga de "Roomboot>" y presionar varias veces enter hasta que aparezca en el prompt "U-boot>"

  3. (Opcional) Si al ingresar "printenv" aparece "at91_nand" (para antiguas versiones de Kernel) y no "atmel_nand"(para versiones actuales de Kernel):

U-Boot> printenv
bootargs=console=ttyS0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 mtdparts=at91_nand:1M(bootloader),3M(kernel),-(rootfs)
bootcmd=nand read 0x21800000 0x100000 0x200000; bootm 0x21800000
bootdelay=1
baudrate=115200
ethaddr=00:0e:20:02:0a:5b
ipaddr=192.168.0.200
serverip=192.168.0.102
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
ethact=macb0

U-Boot> set bootargs console=ttyS0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 mtdparts=atmel_nand:1M(bootloader),3M(kernel),-(rootfs)
U-Boot> saveenv
  1. (Opcional) Configuración de nueva IP
U-Boot> set ipaddr 192.168.1.XX

Para comprobar cambio de IP:

U-Boot> printenv
  1. Configuración del servidor TFTP

tftp2.

U-Boot> set serverip 192.168.1.100
U-Boot> printenv
  1. Cargar Imagen

tftp3

U-Boot> t 0x21800000 uImage
U-Boot> nand erase 0x100000 0x200000
U-Boor> nand write.jffs2 0x21800000 0x100000 0x200000
  1. Cargar File System (Opcional: si las carpetas /root están vacías)
U-Boot> nand erase 0x400000 0x7c00000
U-Boot> t 0x21000000 rootfs.img
U-Boot> nand write.jffs2 0x21000000 0x400000 $(filesize)

$(filesize) : 0x7c0000

Instalación de Python 2.6 en el Sistema Embebido

Algunos módulos ABS no cuentan con python instalado en su sistema, si al digitar # python --version no hay ningún resultado, seguir los siguientes pasos:

  1. Es necesario tener una copia de la versión comprimida de Python 2.6.3 en una memoria sd.

  2. Si /mnt/sd/ no extiste en el embebido:

# mkdir /mnt/sd
# mount -t vfat /dev/mmcblk0p1 /mnt/sd
  1. Se ingresa a la carpeta /mnt/sd y se busca Python 2.6.3 comprimido para copiarlo a la raíz del sistema embebido '/'.
# cd /mnt/sd
# ls
Python-2.6.3-arm-full.tar.gz
# cp Python-2.6.3-arm-full.tar.gz /
  1. Se ingresa a la raíz del sistema '/' y se descomprime Python-2.6.3-arm-full.tar.gz
# cd /
# ls
Python-2.6.3-arm-full.tar.gz                  proc
bin                                           root
debootstrap                                   sbin
dev                                           selinux
etc                                           sys
home                                          tmp
lib                                           usr
linuxrc                                       var
mnt
# tar -xzf Python-2.6.3-arm-full.tar.gz
# python --version
Python 2.6.3

Algunas veces después de descomprimir aparece tar: invalid tar magic . Este error puede ser ignorado.

Ejecución de Scripts

Ejecución manual:

# telnet 192.168.1.XX
# cd /abscontrol
# python abscontrol.py &
# python multicast_absmodule.py &
# cd /
# ./tcp_Control_Module experimento1.ab1 &

Ejecución automática en el inicio:

# cd /etc/init.d/
# vi MyApp
#eth
/etc/init.d/networking stop
ifconfig eth0 hw ether 02:01:02:03:04:02
/etc/init.d/networking start
ifconfig eth0 192.168.1.20
ifconfig eth0 netmask 255.255.255.0
route add default gw 192.168.1.1
#sd
mkdir /mnt/sd
mount -t vfat /dev/mmcblk0p1 /mnt/sd

#app
cd /

./tcp_Control_Module experimento1.ab1 &
#export pid=`ps aux | grep tcp_Control_* | awk 'NR==1{print $1}' | cut -d' ' -f1`;kill -9 $pid

telnetd
#Servidor UDP
#/mnt/sd/ServidorUDP_arm > /dev/null 2>&1 &

#Inicia Servidor
#udpsvd -vE 0.0.0.0 69 tftpd -c /mnt/sd/archivos > /dev/null 2>&1 &

#ABS Server (SIR)
cd /abscontrol/ 
python abscontrol.py &
python multicast_absmodule.py &

Para que sea ejecutable:

# chmod +x MyApp

En mi archivo MyApp debería estar los siguientes comandos:

cd /                                                                    
./tcp_Control_Module experimento1.ab1 &

cd /abscontrol/
python abscontrol.py &
python multicast_absmodule.py &

En el archivo MyApp también se puede modificar la IP del embebido

ifconfig eth0 192.168.1.XX

tftpboot1.png View (415 KB) Fiorella Quino, 11/08/2016 02:15 PM

servidortftp1.png View - servidortftp1 (73.4 KB) Fiorella Quino, 11/08/2016 02:26 PM

t - t (358 KB) Fiorella Quino, 11/08/2016 02:49 PM

tftp2.png View - tftp2. (299 KB) Fiorella Quino, 11/08/2016 02:51 PM

tftp3.png View - tftp3 (466 KB) Fiorella Quino, 11/08/2016 02:56 PM

top2.png View - top2 (97.6 KB) Fiorella Quino, 11/08/2016 07:30 PM

nc11.png View - nc11 (40.1 KB) Fiorella Quino, 11/10/2016 10:11 PM

nc22.png View - nc22 (295 KB) Fiorella Quino, 11/10/2016 10:11 PM