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:
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
En la PC desde la carpeta con los archivos necesarios:
nc -w 3 192.168.1.XX 1234 < bottle.py
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)¶
- Instalación de servidor:
$ sudo apt-get install xinetd tftpd tftp
Contenido del archivo "/etc/xinetd.d/tftp" (Crearlo si no existe)
Creación de carpeta contenedora de archivos en serivdor tftp
$ sudo mkdir /tftpboot
- Copiamos los archivos imágenes en la carpeta tftboot y verificamos su contenido
$ cd tftpboot/ /tftpboot$ ls hola.txt uImage uImage-3.2.6
- 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 . . .
- Se reinicia el servicio
$ sudo service xinetd restart xinetd stop/waiting xinetd start/running, process 5286
En el embebido (Módulo ABS)¶
Encender el sistema embebido con conexión serial y ethernet (velocidad 115200 bps) (si se ingresa por putty: ttyUSB0)
En la consola por serial esperar carga de "Roomboot>" y presionar varias veces enter hasta que aparezca en el prompt "U-boot>"
(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
- (Opcional) Configuración de nueva IP
U-Boot> set ipaddr 192.168.1.XX
Para comprobar cambio de IP:
U-Boot> printenv
- Configuración del servidor TFTP
U-Boot> set serverip 192.168.1.100 U-Boot> printenv
- Cargar Imagen
U-Boot> t 0x21800000 uImage U-Boot> nand erase 0x100000 0x200000 U-Boor> nand write.jffs2 0x21800000 0x100000 0x200000
- 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:
Es necesario tener una copia de la versión comprimida de Python 2.6.3 en una memoria sd.
Si /mnt/sd/ no extiste en el embebido:
# mkdir /mnt/sd # mount -t vfat /dev/mmcblk0p1 /mnt/sd
- 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 /
- 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