Upload
tranhanh
View
245
Download
0
Embed Size (px)
Citation preview
1/ 90
I
Plan: Máster Universitario en Electrónica, Tratamiento de Señal y Comunicaciones.
Centro: E.T.S. de Ingeniería . Asignatura: Trabajo fin de máster. Curso: 2016/17.
Control y supervisión web de
GPIO’s-Zedboard a través de Xillybus.
Tutor: Fernando Muñoz Chavero.
Alumno: Óscar Falcón Pérez.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. -Contenido.
2/ 90
Contenido 1. Objeto: ................................................................................................................................... 5
2. Solución: ................................................................................................................................ 5
3. Desarrollo de trabajo: ........................................................................................................... 5
3.1 Planteamiento TFM: .......................................................................................................... 5
3.2 Recursos para trabajo: ...................................................................................................... 6
3.2.1 Hardware: ...................................................................................................................... 6
3.2.2 Software. ....................................................................................................................... 6
4. Generalidades. ...................................................................................................................... 7
4.1 Definiciones: ...................................................................................................................... 7
4.2 Zedboard ........................................................................................................................... 7
4.2.1 ZedBoard Kit contents: [2] ............................................................................................ 7
4.2.2 Características. .............................................................................................................. 8
4.2.3 Arranque dede SD[3] ..................................................................................................... 9
5. Preparando PC. .................................................................................................................... 11
5.1 Sistema operativo PC - Distribución Linux. ..................................................................... 11
5.1.1 Problema de sonido: ................................................................................................... 12
5.1.2 Problema de USB. ........................................................................................................ 12
5.1.3 Problema de teclado. .................................................................................................. 12
5.2 Vivado. ............................................................................................................................. 12
5.2.1 Licencias[6] . ................................................................................................................ 12
5.2.2 Instalación de Vivado en UBUNTU. ............................................................................. 13
5.2.3 licencia (archivo). ........................................................................................................ 14
5.2.4 Inicio con VIVADO ....................................................................................................... 14
5.2.5 Laboratorios ................................................................................................................ 15
5.3 SDK .................................................................................................................................. 16
5.3.1 Instalación ................................................................................................................... 16
5.4 Gestión remota terminales. ............................................................................................ 16
5.4.1 Acceso por consola básico. ......................................................................................... 16
5.4.1.1 Configuración teraTERM. ............................................................................................ 17
5.4.2 Acceso por consola avanzado. .................................................................................... 17
6. Preparando Zedboard. ........................................................................................................ 20
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. -Contenido.
3/ 90
6.1 Xillinux 1.3[10] ................................................................................................................. 20
6.1.1 Xillybus IP core [12] .................................................................................................... 22
6.1.1.1 Licencia IPcores-Xillybus[13] ....................................................................................... 23
6.1.2 Instalación Xillinux. ...................................................................................................... 24
6.1.2.1 Kit de partición de arranque ....................................................................................... 26
6.1.2.2 Preparación SD. ........................................................................................................... 32
6.1.3 Trabajando con Xillinux. .............................................................................................. 35
6.1.4 Personalizando Zedboard. ........................................................................................... 37
6.1.4.1 Acceso a Zedboard desde consola de PC por puerto serie. ........................................ 38
6.1.4.2 Acceder a Zedboard desde consola de PC por TCP/IP. ............................................... 39
6.1.4.3 Coexistencia TCP/IP con comunicaciones serie. ......................................................... 39
6.1.4.4 Redimensionar la tarjeta SD. ....................................................................................... 39
6.1.4.5 Configuración SSH ....................................................................................................... 40
6.1.4.6 Apache. ........................................................................................................................ 41
6.1.4.7 PHP .............................................................................................................................. 42
6.1.4.8 Comprobar bucle ......................................................................................................... 43
6.1.4.9 Acceso al Interface memoria. ...................................................................................... 45
6.1.5 Interacción con elementos de campo FPGA. .............................................................. 46
6.1.5.1 Control LEDS. .............................................................................................................. 46
6.1.5.2 Supervisión de Switch ,pushbotton y LED’s. ............................................................... 49
7. Tareas comunes. ................................................................................................................. 52
7.1 Comunicación por Ethernet entre PC y Zedboard. ......................................................... 52
7.2 Html ................................................................................................................................. 53
7.2.1 Editores de html. ......................................................................................................... 53
7.2.2 Sensecase .................................................................................................................... 53
7.2.2.1 Notepad ++ .................................................................................................................. 54
8. Aplicación web .................................................................................................................... 55
8.1 Manual usuario. .............................................................................................................. 56
8.1.1 Instalación. .................................................................................................................. 56
8.1.2 Ejecución ..................................................................................................................... 56
8.1.3 Página principal. .......................................................................................................... 56
8.1.4 Estado de entradas ...................................................................................................... 57
8.1.5 Estado y botones de control de salidas ....................................................................... 59
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. -Contenido.
4/ 90
8.1.6 Confirmación LEDs. ..................................................................................................... 60
8.2 Desarrollo de aplicación. ................................................................................................. 60
8.2.1 Estructuras páginas web. ............................................................................................ 61
8.2.2 Funcionamiento. ......................................................................................................... 62
8.2.3 Código de páginas web ............................................................................................... 63
9. Imagen SD TFM................................................................................................................... 64
10. Referencias bibliográficas. .............................................................................................. 65
11. Referencias Software y archivos. .................................................................................... 66
12. Trabajos futuros. ............................................................................................................. 66
13. Anexo............................................................................................................................... 67
13.1 Anexo nº1: Código página 00_TFM.html ........................................................................ 68
13.2 Anexo nº2: Código 10_Entradas_SW_PB.php ................................................................. 71
13.3 Anexo nº3: Código 20_Salidas_LED’s.php ....................................................................... 76
13.4 Anexo nº4: Código 22_23_LED.php ................................................................................ 81
13.5 Anexo nº5: Scripts mando LED’s ..................................................................................... 86
13.5.1 Script: 24_LED64e.sh ................................................................................................... 86
13.5.2 Script: 25_LED64a.sh ................................................................................................... 86
13.6 Anexo nº6: Código LED 61 intermitencia ........................................................................ 87
13.7 Anexo nº 7: Scripts habilitación entradas. ...................................................................... 88
13.7.1 Script: 11_Habilitar_SW_PB.sh .................................................................................. 88
13.7.2 Script: 21_Habilitar_LEDs.sh ....................................................................................... 88
13.8 Anexo nº8: Scripts habilitación salidas............................................................................ 90
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 1.-Objeto.2.-Solución. 3.-Desarrollo de trabajos
5/ 90
1. Objeto:
El objeto de este trabajo fin de máster (TFM) es supervisar los estados de los Switches,
pushbottons además de controlar los LEDs y conocer la orden de encendido apagado LED, todo
ello a través de un navegador web externo que realizará peticiones a un servidor web
establecido en Zedboard.
2. Solución:
A través de varias páginas webs detalladas en capítulos posteriores se realizan las consultas
para conseguir el control y supervisión de los LED’s, Switches y pushbottons.
3. Desarrollo de trabajo:
3.1 Planteamiento TFM:
El trabajo se ha dividido en diferentes tareas que siguen el siguiente curso:
Inicialmente presentamos un capítulo 4 de “Generalidades” donde se muestra fabricantes,
Documentación de tarjeta, información de trabajo de tarjeta… para así conocer el dispositivo
que usaremos en este TFM.
En el siguiente capítulo nº5 “Preparación de PC” se describe el entorno de trabajo que se
requiere para este TFM y servirá para configurar la tarjeta entre otro. En este capítulo se
identifican el sistema operativo en PC utilizado, el Software Vivado y SDK de Xilinx de
desarrollo para Zedboard y por último el control por consola de zedboard.
El capítulo nº6 “Preparación de Tarjeta Zedboard” se detalla la configuración de la tarjeta para
este TFM y se realiza a través de PC . Se describe el sistema operativo Xillinux-Xillybus que es
objeto de TFM y se personaliza la misma preparando la comunicaciones desde consola y el
entorno web .Por último se muestra la forma en que el usuario accede por Xillinux a los GPIO’s
que se utiliza en la preparación de la aplicación web.
El capítulo nº7 “ Tareas comunes” se estudia aspectos que se necesitan para el desarrollo de
este TFM como la comunicación por Ethernet entre PC y Zedboard además del lenguaje html
utilizado en la aplicación.
Una vez se dispone de la tarjeta y el PC configurados según apartados anteriores se desarrolla
el manual de usuario de la herramienta web que cumple con TFM , para terminar
describiendo el código desarrollado tanto páginas como archivos.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 1.-Objeto.2.-Solución. 3.-Desarrollo de trabajos
6/ 90
3.2 Recursos para trabajo:
Para llevar a cabo este TFM se requiere del siguiente Hardware y Software.
3.2.1 Hardware:
1. PC:
o Ubuntu/windows Vista.[5]
2 GHz dual core processor or better
2 GB system memory
25 GB of free hard drive space
o Lector tarjetas SD. Adaptador USB /SD en PC para escribir la SD.
2. Monitor 19’: [1]
o 16-bit color VGA with a minimum recommended resolution of 1024 by 768
pixels 60Hz.
3. Entrada analógica VGA y HDMI.
4. Cable conector VGA. [1]
5. Cable conector HDMI.
6. Tarjeta Zedboard que incluye kit. [1]
7. Tarjeta SDHC marca:“Sandisk” 4 GB mínimo. [1]
8. Conexión Internet.
9. Cable UTP RJ45.
10. USB con ratón y teclado. [1]
11. Hub mínimo 4 conectores reconocido por Linux 3.12.0. [1]
12. Pendrive USB 4 GB.
3.2.2 Software.
Unetbootin.( https://unetbootin.github.io/linux_download.html)
Ubuntu 16.04 LTS.
Windows Vista.
Vivado 2016.3. ( Apartado 2.3 de [19])
SDK.
Win32diskimager.
Teraterm Windows.
WINSCP
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 4.-Generalidades.
7/ 90
4. Generalidades.
4.1 Definiciones:
GPIO: General Purpose Input/Output.
IP: Intelectual property.
Zedboard: Zynq Evaluation board
Vivado HLS: High level Syntesis.
AXI: Advanced extensible Interface.
FMC: FPGA Mezzanine connector.
SSH: Secure Shell - intérprete de órdenes seguro.
4.2 Zedboard
Existen otras placas de desarrollo por ejemplo del programa XUP (Xilinx University program ) ,
sin embargo se ha optado por Zedboard por la amplia documentación existente y el
presupuesto , además de los “devices“ que dispone.
4.2.1 ZedBoard Kit contents: [2]
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 4.-Generalidades.
8/ 90
a. ZedBoard
b. 12 volt / 5 ampere power supply with US, European AC adapter .
c. USB-A to Micro-USB-B cable.
d. Micro-USB-B to Type A Female adapter cable.
e. 4GB SD card .
f. Software .
i. Xilinx Vivado DVD .
ii. Xilinx License Voucher for Vivado Design Edition tools for
ZedBoard designs.
g. Documentation o •Getting Started Card .
Se debe de utilizar SANDISK porque puede dar error a la hora de ejecutar el comando en
Zedboard:
$ startx
y para arrancar el entorno gráfico.
4.2.2 Características.
ZEDBOARD KEY FEATURES [2]:
• Processor o Zynq™-7000 AP SoC XC7Z020-CLG484-1
• Memory:
• 512 MB DDR3.
• 256 Mb Quad-SPI Flash.
• 4 GB SD card.
• Communication :
• Onboard USB-JTAG Programming .
• 10/100/1000 Ethernet .
• USB OTG 2.0 and USB-UART.
• Expansion connectors :
• FMC-LPC connector (68 single-ended or 34 differential I/Os).
• 5 Pmod™ compatible headers (2x6).
• Agile Mixed Signaling (AMS) header.
• Clocking :
• 33.33333 MHz clock source for PS .
• 100 MHz oscillator for PL.
• Display :
• HDMI output supporting 1080p60 with 16-bit, YCbCr, 4:2:2 mode color.
• VGA output (12-bit resolution color) .
128x32 OLED display.
• Configuration and Debug :
• Onboard USB-JTAG interface.
• Xilinx Platform Cable JTAG connector.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 4.-Generalidades.
9/ 90
• General Purpose I/O:
8 user LEDs .
7 push buttons .
8 DIP switches .
4.2.3 Arranque dede SD[3]
A continuación se presentan los jumper de la tarjeta:
Para arrancar Zedboard desde SD se debe de configurar los jumpers:
Puente Estado Observaciones:
JP2 JP6 JP7 JP8 JP9 JP10 JP11 VADJ SELECT
Cerrado. Cerrado GND-SIG GND-SIG 3V3-SIG. 3V3-SIG. GND-SIG 2V5
Suministrar 5V al dispositivo USB. Necesario para el silicio CES - Boot Device Select Boot Device Select Boot Device Select PLL Select. GND uses PS PLLs. Selects Vadj (1.8V, 2.5V, or 3.3V)
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 4.-Generalidades.
10/ 90
En la siguiente imagen se muestran los jumpers seleccionados en la tabla anterior aunque en la misma faltaría seleccionar el jumper JP2.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
11/ 90
5. Preparando PC.
Se trata de configurar el PC que utilizamos para configurar la tarjeta Zedboard.
Para ello configuramos dos Softwares:
UBUNTU. Se ha elegido como sistema operativo en el PC UBUNTU por la
homogeneidad con el S.O. Xillinux que vamos a trabajar con Zedboard, aunque podría
haber sido Windows. También nos sirve para confirmar la partición ext4 que
necesitaremos montar sobre la SD.
Vivado. Lo utilizaremos para configurar PL /PS de la tarjeta Zedoard
A continuación se desarrollan los puntos anteriores.
5.1 Sistema operativo PC - Distribución Linux.
La distribución de Linux más actual, a fecha de realización de TFM ,para entorno de trabajo en
PC es Ubuntu 16.04.02 LTS (long time support )x64 del fabricante Canonical , que es
compatible con VIVADO 2016.3. en pág 5 de [4]
Para descargar el sistema operativo sin más que ir a su centro de descarga [5].
La creación del USB live la realizo con programa Unetbootin,[S1]( descargamos y ejecutamos :
$ chmod +x ./unetbootin-linux
$ ./unetbootin-linux
también es válido el programa Rufus 2.11.995.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
12/ 90
indicar por sive de ayuda que la instalación desde USB me dio problemas pues al arrancar la
BIOS estaba como primer “Boot” USB , sin embargo en “Boot menu” aparecía el HDD y debía
de ser USB .
5.1.1 Problema de sonido:
Una vez cargado Ubuntu , me presenta un problema de sonido que para resolverlo necesito
conocer el chip que ejecutaba el PC , a través de:
$ lsmod|grepsnd
Este es el chip : “ snd_hda_intel “.
$ alsa mixer
ALC888.
$Sudo gedit/etc/modprobe.d/alza-base.conf
Al abrirse el archivo debajo de la última línea añado:
$ Options snd-hda-intel model=auto
Guardamos , cerramos el archivo , reiniciamos el equipo y solucionado.
5.1.2 Problema de USB.
Para reconocer USB, se debe de realizar desde sistemas de archivo, debajo de equipo USBDISK:
$ options snd-hda-intel probe_mask1 model-6stack-dell.
5.1.3 Problema de teclado.
No funciona la tecla de ”ñ” del teclado y otros detalles . Ha sido necesario eliminar el teclado
ingles y escribir el español desde la configuración del sistema.
5.2 Vivado.
La herramienta de diseño para la parte PL/PS de Zedboard seleccionada es VIVADO pues
Xilinx indica que para los nuevos diseños de Ultrascale, VITEX 7 , Kintex-7 , Artix 7 y Zynq-7000.
En nuestro caso Zedboard cuenta con Artix-7.
5.2.1 Licencias[6] .
En el siguiente recuadro aparecen las distintas licencias con las que comercializa Xilinx la
herramienta Vivado destacando que funcionalidades recoge cada una de ellas.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
13/ 90
Elegimos Vivado HL WebPACK( Device limited) para la instalación de Vivado por ser de licencia
gratuita ,incluir el FPGA que vamos a utilizar y ser suficiente para este TFM pues “System
Generator for DSP” no es necesaria al no diseñar en este TFM DSP.
5.2.2 Instalación de Vivado en UBUNTU.
Una vez confirmado [4] que la versión 2016.3 es soportada por la arquitectura de UBUNTU,
procedo a utilizar el Web installer. Dando problemas en la licencia hecho conocido por Xilinx.
Para descargar Vivado u otro recurso (Workshops , labs ) de Xilinx es necesario tener
habilitada una cuenta usuario, a partir de esto ya podemos proceder a descargar [7] el Full
installer de Vivado Design Suite - HLx Editions - 2016.3 Full Product Installation, esto es :
Xilinx_Vivado_SDK_2016.3_1011_1.tar.gz (21.6Gb).
Una vez descargado ejecutamos:
$ sudo shxsetup.
A continuación se siguen las instrucciones del instalador. Se inserta la Licencia (descrita en el
apartado posterior).
Es importante que las carpetas sobre las que se trabajan se tengan los suficientes permisos
lectura escritura.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
14/ 90
Nos advierte que los drivers de Zedboard deben de ser cargados aparte, sin embargo la
programación será a partir de la descarga de .bit en la SD.
5.2.3 licencia (archivo).
Mientras se descarga Vivado se puede ir realizando la parte de licencia de Xilinx obteniendo un
archivo “ Xilinx.lic“ que será pedido durante la instalación de Vivado.
El archivo contiene [S2]:
# ----- REMOVE LINES ABOVE HERE --------------------------
#
# This license is valid from Mon Nov 14 20:23:20 UTC 2016.
#
# This is license NODELOCKED to HOSTID=ANY;
# there is no need to run lmgrd for this license.
#
#
# This is a permanent license generated on Mon Nov 14 20:23:20 UTC 2016
INCREMENT ISE_WebPACK xilinxd 2017.11 permanent uncounted \
F4C05FD7C6C0 \
VENDOR_STRING=oscarfalcon2000,ISE_WebPACK,software,permanent,_211265456_0_0_53
7 \
HOSTID=ANY ISSUER="Xilinx Inc" START=14-Nov-2016 TS_OK
#
#
# ----------------------------------------------------------------------
# The following PACKAGE definition is a REQUIRED part of this license:
#
PACKAGE ISE_WebPACK xilinxd 2017.11 333E2F4A0E54 COMPONENTS="SDK \
ChipScopePro_SIOTK ChipscopePro WebPACK XC7Z010 XC7Z030 HLS \
xps_tdp XC7Z020 PlanAhead" OPTIONS=SUITE
#
# ----------------------------------------------------------------------------
--
#
----- REMOVE LINES BELOW HERE --------------------------
5.2.4 Inicio con VIVADO
El documento “vivado design Suite user-Guide getting started [8]” es muy interesante para
conocer detalles del entorno de trabajo instalación , flujo de procesos ,tutoriales ,
documentación , laboratorios , Workshops….
Para arrancar Vivado se hace desde la terminal.primero se debe de ejecutar el siguiente
comando:
$ source /opt/Xilinx/Vivado/2016.3/settings64.sh
Una vez ejecutado se llaa a vivado sin más que :
$ vivado
Comenzando el start_gui de vivado.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
15/ 90
Tras unos segundos aparece la página inicial de Vivado:
Para cerrar simplemente desde file/exit.
5.2.5 Laboratorios
Estos están en repositorios GIT.
El archivo .bit que devuelve Vivado se utiliza para generar el fichero que contendrá la
secuencia de bits con la que se configurará la FPGA.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
16/ 90
5.3 SDK
El kit de desarrollo de software (SDK) proporciona un entorno de desarrollo para proyectos de aplicación de software SDK se basa en el estándar [7] Eclipse de código abierto.
5.3.1 Instalación
Arranque [6] de SDK en vivado 2016.3 /Ubuntu 16.04. Para arrancar SDK existe un problema
con la versión GTK enviada con Ubuntu 16.04 que tiene problemas con el Eclipse. Para evitar
este problema se debe de establecer la variable de entorno SWT_GTK3 en 0. Para ello hay que
teclear en Shell de PC :
$ Export SWT_GTK3=0
5.4 Gestión remota terminales.
Para este TFM se han instalado dos programas que sirven para gestión remota de terminal
(Zedboard) , accediendo directamente al mismo.
Acceso por consola básico.
Acceso avanzado incluyendo para las necesidades de TFM :terminal y transferencia de
archivos.
5.4.1 Acceso por consola básico.
Para acceder por consola desde el PC se pueden utilizar varios programas . Opto por utilizar
TERATERM[S11] en Windows.
Descargo teraterm-4.93.exe 13.7MB y se ejecuta el instalador.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
17/ 90
5.4.1.1 Configuración teraTERM.
Realizados los puntos anteriores desde el PC , Abrimos tera term/Setup /Serial port . Windows
detecta y asigna el puerto COM (en este caso es COM3 ) serie dado al USB-UART.
Una vez establecida comunicación ya podemos
Utilizar la consola desde PC.
5.4.2 Acceso por consola avanzado.
Para acceder por consola avanzado desde el PC se ha optado por la aplicación WINSCP [S12]
con un elaborado entorno gráfico y facilidades de comandos.
PAraa descargar WINSCP se realiza desde https://winscp.net/download/WinSCP-5.9.4-
Portable.zip
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
18/ 90
Descomprimiendo y ejecutando la aplicación WINSCP
Se abre el entorno gráfico en el que se solicita hostname, port number , username , pasword.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 5.-Preparando PC
19/ 90
Introduciendo los parámetros, habiendo preparado en Zedboard SSH y conectada esta por
ethernet desde Login se comienza el protocolo de la sesión :
Para obtener el siguiente interfaz.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
20/ 90
6. Preparando Zedboard.
La preparación de la tarjeta Zedboard para este TFM es necesario configurarla de forma que:
1. Trabaje con Xillinux ( pues es el Software que estamos probando) , arranque el
sistema operativo desde tarjeta SD y se optimice su uso .
2. Sea gestionada desde consola.
3. Tenga configurado el entorno de servidor web.
4. Conozcamos la interacción entre Xillinux y FPGA.
6.1 Xillinux 1.3[10]
Xillinux :
Es una distribución Linux completa, gráfica y basada en LTS de Ubuntu 12.04 para el
dispositivo EPP Zynq-7000, concebido como una plataforma para el rápido desarrollo
de proyectos de PL/ PS y optimizado para Zedboard.
Se puede escribir directamente un programa C / C ++ como se hace en Linux y
posteriormente compilarlo en ZEDBOARD.
Incluye el adaptador VGA que permite mostrar en un monitor desde Zedboard.
Incluye Xillybus IPcore que sirve de enlace entre FPGA y Linux siendo un fichero la
forma de interactuar.
Está pensada como una plataforma de desarrollo y un entorno listo para usar para el
desarrollo e integración de lógica personalizada. No sólo es una demostración sino que
a partir de las pruebas que se realicen con el paquete demo se puede diseñar un IP
personalizado.[11]
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
21/ 90
Inicialmente estaba diseñado para Xilinx y Altera, aunque dado el poco interés en
Altera esta se ha quedado en desuso. Sólo la línea de Xilinx tiene soporte.
A continuación se muestran las tarjetas que soportan Xillybus observando la amplia
gama de tarjetas que existe con la velocidad y ancho de banda.[18] Indicar que la
demo utilizada en este TFM busca simplicidad no optimizar el ancho de banda de
Xillybus Ip core
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
22/ 90
Es importante darse cuenta que en Linux los archivos y ficheros tienen dueño.
6.1.1 Xillybus IP core [12]
Xillybus es un IP que está integrado en Vivado. Para utilizarlo se hace desde plataforma Xillinux
está soportado por Vivado 2014.4 y versiones anteriores[10].
A continuación se muestra diagrama de bloques donde se observa la interactuación entre los
dispositivos lógicos y el procesador.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
23/ 90
Los núcleos IP Xillybus predeterminados eliminan la necesidad de conocer el lenguaje interno
de bajo nivel de la programación del kernel y la interfaz con el procesador, presentando un
entorno de trabajo simple y eficiente para los diseñadores de aplicaciones.
6.1.1.1 Licencia IPcores-Xillybus[13]
Existen distintas modalidades de licencia de Xillybus:
El núcleo Xillybus tiene varias variantes de licencia:
1. Licencia de evaluación sin cargo: Un núcleo totalmente funcional,Posiblemente
adaptados a las especificaciones del cliente, para Evaluación en el entorno real del
proyecto, con datos reales en condiciones reales.
2. Licencia de producción: Licencia libre de derechos Xilinx SignOnce (O similar) para un
número ilimitado de copias.
3. Licencia de copia única: una licencia Xilinx SignOnce de menor costo (O similar)
limitado a un único dispositivo físico FPGA en En cualquier momento dado.
4. Licencia educativa gratuita: uso ilimitado que concede la licencia de educación sin
cargo para fines académicos: instrucción en las aulas, utilizar en los laboratorios de
estudiantes, asignaciones y proyectos de los estudiantes, así como en proyectos de
investigación con limitado o ningún presupuesto. Sin embargo para proyectos que
están destinados a productos comerciales o servicios o el desarrollo de los mismos, no
están cubiertos por esta licencia. En caso de duda, se debe de envíar un correo
electrónico a [email protected] con los detalles de su proyecto. [12]
La licencia educación cubre cualquier IP core descargado de este sitio, incluyendo los núcleos
generados en la fábrica de núcleo IP.
Dado el carácter académico de este TFM se opta por licencia educativa .
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
24/ 90
6.1.2 Instalación Xillinux.
La instalación de Xillinux en Zedboard es sencilla, se trata de seguir las instrucciones dadas en
[10] , este documento es el que se basa la instalación por lo que es de suma importancia en
este apartado y sub-apartados.
La partición de arranque en FAT32 debe de tener los siguientes archivos:
Xillinux se ubicará en la tarjeta SD de Zedboard en la partición Ext4 .Esta debe de ser marca
SANDISK. Se ha utilizado con capacidad 4GB.
Lo primero que se debe tener es la tarjeta particionada en dos archivos de sistema: FAT32 y
EXT4.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
25/ 90
En la tarjeta debe configurarse de la siguiente forma:
Archivos de sistema:
Archivos: Descirpción
FAT32
Xillidemo.bit
Contiene la descripcion de hardware, pines… obtenida en Vivado.
Boot.bin Contiene las inicializaciones del procesador y U-boo t(Universal-boot)
Devicetree.dtb
Contiene la información del hardware para que el kernel sepa que drivers debe de cargar. Un "dtb" archivo contiene un Árbol de Dispositivos Blob (o Binario)(buena descripción aquí). Se trata de la nueva(re) forma de pasar el hardware de la información acerca de la junta directiva del núcleo de linux. [14]
uImage
Contiene kernel de linux con partición FAT
Total: 15.6MB
Ext4
Distintos archivos que componen Xillinux.
El Árbol de Xillinux obtenido desde la creación de ext4 es el que utiliza Xillinux en la zedboard.
Total: 1,6 GB (Originalmente). 3.9 GB (Una vez redimensionado).
Los archivos necesarios para el arranque están disponibles en la página referenciada [15] en el
apartado download
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
26/ 90
en el que aparecen (en orden invertido al de la figura):
1. El Kit de partición de arranque.
2. La imagen de Xillinux en la que no es necesario ninguna modificación, sólo copiarla en
SD.
6.1.2.1 Kit de partición de arranque
Una vez descargado el Kit para Zedboard con nombre (xillinux-eval-zedboard-2.0a.zip)[S3] es
necesario proceder a descomprimir el mismo obteniendo este árbol.
Es interesante ubicarlo en la carpeta de trabajo de Vivado pues tiene los archivos :
xillidemo.vhd que van a ser utilizados.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
27/ 90
Destacar que la carpeta VHDL contiene el archivo de proyecto para la lógica principal y algunas
fuentes, con el archivo editable en VHDL (en el subdirectorio 'src'),
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
28/ 90
El archivo UCF debe de ser modificado si la tarjeta con la que trabajamos no la incluye , en
nuestro caso si la incluye.
6.1.2.1.1 Xillydemo.bit
Para este TFM hemos utilizado VHDL. Debemos de irnos al directorio ../ xillinux-eval-zedboard-
2.0a/vhdl/src y editar el fichero xillydemo.vhd [S4]con un simple editor de texto.
Será necesario eliminar las tres líneas siguientes:
“library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;
entity xillydemo is
port (
-- For Vivado, delete the port declarations for PS_CLK, PS_PORB and
-- PS_SRSTB, and uncomment their declarations as signals further
below.
PS_CLK : IN std_logic;
PS_PORB : IN std_logic;
PS_SRSTB : IN std_logic;
clk_100 : IN std_logic;
otg_oc : IN std_logic;
.........”
A continuación se debe de descomentar las siguientes líneas en la definición de la
arquitectura:
xillydemo.vhd -Original xillydemo.vhd -Modificado -- For Vivado, delete the port
declarations for PS_CLK, PS_PORB and -
- PS_SRSTB, and uncomment their
declarations as signals further below.
…..
-- implementation, but has no
practical significance, as these pads
are
-- completely unrelated to the FPGA
bitstream.
-- signal PS_CLK : std_logic;
-- signal PS_PORB : std_logic;
-- signal PS_SRSTB : std_logic;
signal DDR_Addr :
std_logic_vector(14 DOWNTO 0);
signal DDR_BankAddr :
std_logic_vector(2 DOWNTO 0);
…..
-- General signals
PS_CLK => PS_CLK,
PS_PORB => PS_PORB,
PS_SRSTB => PS_SRSTB,
clk_100 => clk_100,
……
-- For Vivado, delete the port
declarations for PS_CLK, PS_PORB and -
- PS_SRSTB, and uncomment their
declarations as signals further below.
…..
-- implementation, but has no
practical significance, as these pads
are
-- completely unrelated to the FPGA
bitstream.
signal PS_CLK : std_logic;
signal PS_PORB : std_logic;
signal PS_SRSTB : std_logic;
signal DDR_Addr :
std_logic_vector(14 DOWNTO 0);
signal DDR_BankAddr :
std_logic_vector(2 DOWNTO 0);
…..
…..
-- General signals
clk_100 => clk_100,
……
Eliminar estas tres líneas
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
29/ 90
Una vez realizado los pasos anteriores arrancamos Vivado y desde tools/run TCL script
elegimos el archivo Xillydemo-vivado.tcl (No debe de tener espacios el archivo tcl) que se
encuentra en el directorio .. /xillinux-eval-zedboard-2.0a/vhdl.
Se ejecutará script que creará proyecto en Vivado .xpr y con archivos en subdirectorios. Es
importante que no aparezcan errores aunque puede haber avisos.
Al terminar de ejecutarese los procesos que hay en .tcl se abre Vivado mostrándose el
proyecto creado en el que se pueden conocer toda clase de detalles de estructura ,
esquematicos , fuentes ….
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
30/ 90
A continuación se muestra el esquemático del proyecto creado que es interesante por ofrecer
una visión de conjunto de diseño.
En él se pueden observar siete bloques que están interactuando:
Zynq7 Processing System
Processor system reset.
AXI interconnect
Xillyvga_v1_0
Concat.
Xillybus_ip_v1_0
Xillybus_lite_v1_0
Por otra parte están accesible los archivos en formato texto para su edición o consulta.
En este proyecto podemos desarrollar hardware , sin embargo tal cual nos sirve para los
propósitos de TFM.
Por último generamos el bitstream sin más Generate bitstream .
A continuación se muestra Vivado mientras realiza la generación del archivo binario .bit. Se
observa que ha realizado el proceso de síntesis y está realizando la implementación.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
31/ 90
En la siguiente captura se observa la finalización de la generación .bit. Observando que la
síntesis e implementación se ha completada.
El archivo generado Xillydemo.bit [S5] se encuentra en el directorio
vivado/xillydemo.runs/impl_1. Con este fichero ya tenemos todos los ficheros necesarios para
insertarlos en SD.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
32/ 90
6.1.2.1.2 Boot.bin y devicetree.dtb.
Los ficheros [S6] , [S7] están en el kit de arranque dentro del subdirectorio bootfiles.
6.1.2.1.3 Imagen Xillinux
El segundo archivo descargado de la web xillybus que contiene la imagen (xillinux-1.3.img.gz)
[S8]de 466MB se descomprime en archivo IMG (xillinux-1.3 ) alrededor de 1.7GB.
6.1.2.2 Preparación SD.
En la tarjeta SD se incluirán en la partición FAT los siguientes cuatro archivos:
Xillidemo.bit[S5] Boot.bin [S6] Devicetree.dtb[S7] uImage[S9]
Además es necesario montar un sistema de archivos Ext4 que no es reconocida con Windows.
Este sólo ve 15,6MB que tiene SD.
Para crear dicha partición he utilizado Win32 Disk Imager (Win32DiskImager.exe
84KB)[S10] . Sin más que seleccionar como imagen la descargada de Xillybus.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
33/ 90
Seleccionando Write y tras unos minutos aparece un cuadro “ Write sucessful”. A continuación
extraer la SD del PC y volverla a insertar y ahora ya si reconocerá las nuevas particiones.
Desde Linux las propiedades de la tarjeta son los siguientes:
Para el FAT32:
Para Ext4:
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
34/ 90
Las propiedades de FAT32 y Ext4:
Ya está la SD preparada para arrancar Xillinux en la zedboard con la configuración definida por
Xillidemo.bit.
Si se desea modificar la configuración de hardware sólo será necesario sustituir el archivo .bit
por el deseado, manteniendo el resto de la SD.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
35/ 90
Antes de insertar la tarjeta debemos observar la colocación de los jumpers de la tarjeta. Hay
que insertar el jumper JP2 para alimentar con 5V el teclado y raton que se inserten en la
tarjeta.
Y ya se puede proceder a arrancar la tarjeta Zedboard desde la tarjeta SD construida anteriormente. En el apartado puentes SD se describe la configuracion física de jumpers a utilizar.
6.1.3 Trabajando con Xillinux.
Podemos ejecutar todos los comandos representativos de un S.O. Linux por ejemplo:
$ uname-r.
Cuyo resultado en nuestro caso es : 3.12.0-xillinux-1.3
$ whoami
$ date
$ ls
$ ifconfig
Para acceder al entorno gráfico de Xillinux se debe de realizar desde el usuario “root” y a
continuación tecleando
$startx arrancará el entorno gráfico:
El escritorio Xillinux (en Zedboard y Zybo) es como cualquier escritorio de Ubuntu (apartado
4.5 de [10]).
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
36/ 90
Debido al ancho de banda de datos relativamente bajo de la tarjeta (Micro) SD, las aplicaciones
se cargarán un poco lentamente, pero el escritorio en sí es bastante adaptable.
Para ejecutar aplicaciones en el entorno de escritorio, haga clic en el icono de Ubuntu
Escritorio ("Dash home") y escriba el nombre de la aplicación deseada, p. "terminal" para una
ventana de terminal de comandos de shell, o "editar" para el editor de texto gedit.
Paquetes adicionales se pueden instalar con $ apt-get como con cualquier distribución de
Ubuntu.
No es posible actualizar todo el sistema operativo Ubuntu con $ apt , pues fallará dejando el
sistema sin arranque.
El entorno grafico por defecto utiliza el teclado US para cambiarlo a español desde Sysytem
settings/keyboard layout/spanish seleccionamos el teclado español eliminamos el US. La
selección de este teclado se mantiene incluso cuando se vuelva a reiniciar Zedboard.
El teclado en el terminal de inicio antes que arranque el entorno gráfico sigue siendo US.
Es importante salir de la tarjeta con el comando Shutdown para evitar reducir la vida de la
tarjeta. Lo que hago es $ shutdown y una vez no aparece en OLED “Xillinux by Xillybus “ en la
Zedboard y aparece “waiting for X server to shut down “ en la consola se puede apagar. Para
cerrar desde el escritorio hay que cerrarlo desde el desplegable que aparece desde la esquina
superior derecha.
Alternativamente (apartado 4.6 de [10]) se puede “detener” escribiendo: $halt en el intérprete
de comandos de shell. Cuando aparezca un mensaje textual que diga "System Halted" en el
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
37/ 90
UART, es seguro apagar la placa. Un signo alternativo para un Apagado es que el cursor en la
consola de texto VGA / DVI (cuando corresponda) se detiene el parpadeo.
Para un reinicio, que incluye la reconfiguración de la parte FPGA (PL), se selecciona la opción
de reinicio En el menú del escritorio, o se escribe
# Shutdown -r now
Hay que tener presente que esto no necesariamente restablece los componentes de hardware
externos, p. el Chip de sonido.
6.1.4 Personalizando Zedboard.
Una vez ejecutado y comprobado su funcionamiento es interesante preparar Zedboard cuanto
antes para :
1. Acceder a Zedboard desde consola de PC por puerto serie. Apartado 4.3.1[10]
2. Acceder a Zedboard desde consola de PC por TCP/IP.
3. Obtener la máxima capacidad de la tarjeta SD utilizada ,es decir, redimensionar la
tarjeta SD. Apartado 4.4.1[10]
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
38/ 90
4. Permitir comunicación SSH. Apartado 4.4.2[10]
5. Ser servidor web a través de Apache.
6. Utilización de lenguaje PHP.
6.1.4.1 Acceso a Zedboard desde consola de PC por puerto serie.
Para acceder a la tarjeta zedboard desde una consola en PC se necesita:
Desde Zedboard.
Desde PC- Windows.
6.1.4.1.1 Lado Zedboard
Solamente es necesario fijarse donde se encuentra el puerto físico USB-UART para utilizarlo
con el cable que se entrega con el kit.
La tarjeta SD de Zedboard debe estarpreparada según se indica en apartado arranque desde
SD.
6.1.4.1.2 Lado PC
En el apartado se indica las posibles comunicaciones con los puertos.
6.1.4.1.3 Conexión física.
Es necesario conectar entre puerto USB de PC y el Puerto USB-UART de la Zedboard con un
cable físico entregado en kit Zedboard.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
39/ 90
6.1.4.2 Acceder a Zedboard desde consola de PC por TCP/IP.
Este apartado se describe en apartado posterior “Comunicación por Ethernet entre PC y
Zedboard.“
6.1.4.3 Coexistencia TCP/IP con comunicaciones serie.
Es posible mantener la consola por USB UART- Zedboard /USB-PC y la red ehternet que puede
estar respondiendo a las peticiones web del PC.
6.1.4.4 Redimensionar la tarjeta SD.
Para ello aplicamos 4.2.1.[12]
$ df /h
Obtenemos información de la tarjeta SANDISK insertada en Zedboard.
Vemos que aún siendo de 4 GBsólo tenemos 1,6GB con 136 MB. Debemos de prepararla para
utilizar la que nos falta para ello:
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
40/ 90
$ fdisk /dev/mmclbk0
Reinicio la máquina:
$ shutdown –r now
Una vez arrancado al hacer $ df-h aparecerá lo mismo que antes , sin embargo ya hemos dado
espacio para cambiar el tamaño de la SD.
Resize2 fs/dev/mmcblk0p2.
Ahora si que se ha redimensionado la tarjeta a su completa capacidad .
Si de nuevo vemos las características de la tarjeta $ df-h observamos que el archivo disponible
es ya mayor.
6.1.4.5 Configuración SSH
SSH es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a
máquinas remotas a través de una red [14]
Es necesario instalar SSH para ello:
$ apt-get install ssh-server.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
41/ 90
Es importante que la tarjeta esté conectada a internet desde el RJ45 que viene ya
preconfigurado , yaque va a llamar al http://ports.ubuntu.com/ubuntu-ports. y si no está
conectado indica que no está disponible según presenta la siguiente imagen.
En la instalación de SSH intrínsecamente requiere contraseña para poder iniciar sesión desde
el comando aparecido en pantalla como:
#passwd root
Introducimos la contraseña que posteriormente será requerida desde el exterior.
6.1.4.6 Apache.
El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix
(BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo
HTTP/1.12 y la noción de sitio virtual.
6.1.4.6.1 Instalación.
La instalación del servidor web apache se realiza fácilmente en entorno Linux a través de la
orden:
$ apt-get install apache2.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
42/ 90
Una vez terminada la instalación se procede a configurar el archivo
/etc/apache2/apache2.conf insertando como última línea: Servername localhost . así
evitaremos avisos al arrancar.
Para evitar problemas con las tildes se debe de descomentar en el archivo
/etc/apache2/conf.d/charset la siguiente línea: AddDefaultCharset UTF-8.
Para que funcione correctamente usuario apache se requiere añadir permisos al usuario www-
data que es el que utiliza apache. Para ello ejecutamos la orden:
$ sudo visudo.
Al final del archivo incluir:
www-data ALL=(ALL) no password:ALL
Con este paso ya está configurado apache.
6.1.4.6.2 Prueba instalación
La prueba de instalación de apache en Xillinux-Zedboard la podemos realizar desde el
navegador web Mozilla Firefox 11.0 de Zedbioard , escribiendo la dirección http://127.0.0.1
que abrirá la página por defecto de Apache.
Esta página se encuentra en el directorio var/www.
6.1.4.6.3 Publicar html
Para publicar archivos .html en servidor apache es necesario situar al archivo en el directorio (
var/www) .
Una vez situado el archivo debe de tener permisos de lectura para ello es muy importante
dotar a la página de estos permisos sin más que cambiar sus permisos desde propiedades
(properties).
En caso de no retener permisos el navegador indicará que está prohibido:
Forbidden
“ You don’t have permission to access ….html on this server”.
6.1.4.7 PHP
PHP es un lenguaje de programación de uso general de código del lado del servidor
originalmente diseñado para el desarrollo web de contenido dinámico.
El servidor recibe petición PHP desde el cliente de procesar información ( archivos base de
datos , cálcuilos ..) . El intérprete de PHP resuelve la petición devolviendo un archivo html para
ser visualizado por el cliente.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
43/ 90
6.1.4.7.1 Instalación.
La instalación de PHP en Xillinux de Zedboard se realiza con el siguiente teclado:
$ apt-get install php5
6.1.4.7.2 Ejecución.
Para comprobar que PHP ha sido instalada correctamente se puede escribir página
“Version.PHP “en el directorio var/www y con el siguiente código:
<?php
phpinfo();
?>
Desde la página http://127.0.0.1/Version.php del navegador weh de Zedboard o bien desde
http://192.168.1.2/Version.html aparecerá la función php que muestra la configuración del
mismo [S13].
Podemos indicar nombres de host sin tener que acordarnos de la dirección IP , para ello en el
archivo “host” del directorio( /etc ) de Zedboard escribimos:
127.0.0.1 www.TFM.es
De manera que cuando se escriba en el navegador web de Zedboard www.TFM.es /index.html
aparecerá la página index.html que está en el directorio (var/www)
6.1.4.8 Comprobar bucle
Es interesante realizar las siguientes prácticas ( Apartado 3.3 de [16] )para comprobar el
funcionamiento de las señales de Xillybus de lectura y escritura.
Hay que tener presente que es te bucle resta ancho de banda en núcleo Xillybus por lo que
cuando se disponga del IP core Xillybus personalizado habrá que abrir estos bucles.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
44/ 90
6.1.4.8.1 Archivos con 8 bits:
Abrimos dos terminales.
En el primer terminal :
$cat /dev/xillybus_read_8
En el segundo terminal ( desde” new terminal” lado derecho):
$cat >/dev/xillybus_write_8.
Comprobamos que escribiendo en la segunda terminal aparece en la primera lo que hayamos
tecleado. Con ello comprobamos que funciona el bucle con Xillybus.
Por otra parte si ejecutamos en la 1º terminal:
$ date >/dev/xillybus_write_8
En la 2º terminal aparece la fecha.
Nota: Para parar el comando Car se debe de hacer xon la tecla CTRL-C.
6.1.4.8.2 Archivos con 32 bits:
Abrimos dos terminales.
En el primer terminal :
$cat /dev/xillybus_read_32
En el segundo terminal ( desde” new terminal” lado derecho):
$cat >/dev/xillybus_write_32.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
45/ 90
Comprobamos que escribiendo en la segunda terminal no aparece instantáneo en la primera
puesto que todas las entradas y salidas de HW se ejecutan en trozos de 4 bytes ,por lo que la
entrada no ha alacanzado el límite de 4 bytes. El último byte permanecerá no transmitido.
Nota: Para parar el comando CAT se debe de hacer con la tecla CTRL-C.
6.1.4.9 Acceso al Interface memoria.
Es interesante realizar las siguiente práctica ( Apartado 4.4 de [16] )para comprobar el acceso a
la memoria .
Utilizamos el paquete Xillybus_mem_8 siendo el único archivo de dispositivo que se puede
abrir para leer y escribir.
Antes de escribir en la memoria, la situación actual se observa usando la utilidad hexdump.
Teclea el siguiente comando para conocer los registros:
$ hexdump -C -v -n 32 /dev/xillybus_mem_8
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
46/ 90
6.1.5 Interacción con elementos de campo FPGA.
Tal como hemos comentado en este TFM vamos a controlar y supervisar estados de GPIO’s
para ello es necesario saber cómo se interacciona con Linux con FPGA.
La explicación se realizará en los siguientes apartados:
Control LEDS.
Terminal bash.
Por navegador Web.
o Por PHP.
o Por script .phpsh
Supervisión de Switch , pushbotton y LEDs
Terminal bash.
Por navegador Web.
o Por PHP.
o Por script .phpsh
6.1.5.1 Control LEDS.
Los LEDs de Zedboard son identificados en Xillinux como GPIOs con un número asociado
siendo para este caso : GPIO61 …. GPIO64 , identificados en Xillidemo.bit. y fichero .xdc.
Estos GPIOs(LEDs) desde XIllinux se pueden controlar de dos formas:
Terminal bash.
Por navegador Web.
o Por PHP.
o Por script .phpsh
6.1.5.1.1 Terminal bash.
Desde una terminal en Zedboard podemos encender apagar LEDs. Por ejemplo para el GPIO62
será:
$ echo 62 >/sys/gpio/export .
Con este comando reservamos el GPIO62 y si nos vamos al directorio /sys/gpio observaremos
que se ha creado un árbol de carpetas y ficheros que serán los que tengan los valores que nos
interesan.
Es necesario indicar el carácter del puerto salida.
$ echo out >/sys/class/gpio/gpio62/direction .
Asignamos un uno en el fichero , enciendo el led.
$echo 1>/sys/class/gpio/gpio62/value .
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
47/ 90
Asignamos un cero en el fichero , apagando el led.
$echo 0>/sys/class/gpio/gpio62/value // apaga led.
Por último es necesario liberar el GPIO utilizado para que pueda ser utilizado en otros
procesos. Para ello se debe de escribir el siguiente comando:
$ echo 62 >/sys/gpio/unexport .
Estos cambios no se mantienen cuando es apagada la placa y arrancada de nuevo.
6.1.5.1.2 Por navegador Web.
A nivel pedagógico es interesante estudiar dos soluciones a la presentación de los datos por
web , sin embargo a nivel práctico se confirma que el script .sh es menos funcional en código
que utilizando php, en el que aparece más integrado.
Para ejecuta .php o .shphp es necesario que antes el gpio esté exportado (creado el árbol de
directorio) para ello es necesario teclear $ echo 61 >/sys/class/gpio/export. Una vez que
existe este el directorio (sys/class/gpio/gpio61 ) podemos desde un navegador web llamar al
archivo que contiene el código .php o .shphp.
En nuestra aplicación se ha creado un script que habilita los GPIO’s evitando que el usuario
tenga que realizar el proceso anterior
6.1.5.1.2.1 Por PHP
Utilizamos comandos de PHP para obtener el valor de GPIO de entrada.
Desde un archivo PHP y ejecutándolo con extensión php desde navegador web (Mozila)
obtenemos el valor en pantalla de la variable $salida.
El código de este archivo ( EntradaGPIO65PorPHP.php ) es el siguiente:
<?php
$path="/sys/class/gpio/gpio65/value";
$file=fopen($path,"w");
$write($file,”1”);
print $salida;
fclose($file);
?>
En el fichero se observa que la orden fopen abre el fichero que contiene el valor de GPIO , con
fwrite se modifica el valor de GPIO introduciéndolo en el archivo , por último la orden fclose
cierra el acceso.
6.1.5.1.2.2 Por .phphsh
Con este método establecemos el valor del LED que seleccionamos a partir de comandos bash
que se ha explicado en apartado anterior.
Dado que no es posible llamar desde html a bash directamente , se realiza a través de
comando Shell_exec de php que ejecuta script bash para así tomar insertar el valor de LED
deseado por el usuario.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
48/ 90
A la hora de automatizarlo hay que tener presente que es necesario crear un .sh con el
comando indicado y llamar a .sh concreto desde una página php general.
6.1.5.1.2.2.1 Script bash Entradas.
Para automatizar estos comandos de Linux , creamos archivo llamado por ejemplo LED64e.sh.
que quiere decir que este script enciende el LED con GPIO 64. Este código se ha guardado en
el directorio (/var/www/ 24_25_shs):
# Indicamos que el carácter de GPIO es de salida
echo out >/sys/class/gpio/gpio64/direction
# Asignamos el valor de 1= encendido al fichero linux que es pasado por
Xillybus al LED.
echo 1 >/sys/class/gpio/gpio64/value
# Indicamos que hemos encendido LED.
echo "encendido LED"
Para ejecutar este script sin más que teclear $ sh switch64.sh observaremos que el LED se
enciende.
Para apagarlo debemos de utilizar otro script llamado LED64a.sh
# Indicamos que el carácter de GPIO es de salida
echo out >/sys/class/gpio/gpio64/direction
# Asignamos el valor de 0= apagado al fichero linux que es pasado por
Xillybus al LED.
echo 0 >/sys/class/gpio/gpio64/value
# Indicamos que hemos apagado LED.
echo "apagado LED"
6.1.5.1.2.2.2 .Sh encender desde PHP.
Desde un navegador web podemos llamar al script anterior LED64a.sh a través de un
fichero .php y obtener el resultado de la consulta. Para ello creamos archivo LED64e.php en el
directorio (/var/www ) en el que escribimos el código:
<?php
shell_exec('sudo sh /var/www/24_25_shs/24_LED64e.sh');
?>
Se encenderá el LED de GPIO64 de la tarjeta Zedboard.
Para apagarlo sin más que llamar a 25_LED64a.sh
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
49/ 90
6.1.5.2 Supervisión de Switch ,pushbotton y LED’s.
Los switches y pushbotton de Zedboard son identificados en Xillinux como GPIO’s con un
número asociado siendo para este caso :
Para Switch : GPIO65 …… GPIO68 , identificados en Xillidemo.bit. y fichero .xdc
Para Push Bottons: GPIO 73….. GPIO 77
Estos GPIOs se pueden monitorizar desde Xillinux de dos formas:
Terminal bash.
Por navegador Web.
o Por PHP.
o Por script .phpsh
6.1.5.2.1 Terminal bash.
Desde una terminal podemos conocer los valores de GPIO65 al GPIO 77.
Por ejemplo para el GPIO65 será:
$ echo 65 >/sys/class/gpio/export .
Con este comando reservamos el GPIO65 y si nos vamos al directorio /sys/class/gpio
observaremos que se ha creado un árbol de carpetas y ficheros que serán los que tengan los
valores que nos interesan.
Es necesario indicar el carácter del puerto entrada
$ echo in >/sys/class/gpio/gpio65/direction .
Con este comando estamos monitorizando el valor de GPIO65 de forma que cada vez que
realizamos este comando nos traemos el valor.
77
75
74 73
76
68 67 66 65
Identificación de número de GPIO en Push botton
.. 72
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
50/ 90
$cat /sys/class/gpio/gpio65/value .
Para conocer el valor de uno (1) de pushbotton hay que considerar que este debe de estar
pulsado mientras se ejecuta el comando. Se prueba con el comando:
Quedándose en espera pero sin representar el valor.
$cat >/sys/class/gpio/gpio65/value .
Por último es necesario liberar el GPIO utilizado para que pueda ser utilizado en otros
procesos. Para ello se debe de escribir el siguiente comando:
$ echo 65 >/sys/gpio/unexport .
6.1.5.2.2 Por navegador WEB.
A nivel pedagógico es interesante estudiar dos soluciones a la presentación de los datos por
web , sin embargo a nivel práctico se confirma que el script .sh es menos funcional en código
que utilizando php, en el que aparece más integrado.
Para ejecuta .php o .shphp es necesario que antes el gpio esté exportado (creado el árbol de
directorio) para ello es necesario teclear $ echo 65 >/sys/class/gpio/export. Una vez que
existe este el directorio (sys/class/gpio/gpio65 ) podemos desde un navegador web llamar al
archivo que contiene el código .php o .shphp.
En nuestra aplicación se ha creado un script que habilita los GPIO’s evitando que el usuario
tenga que realizar el proceso anterior.
6.1.5.2.2.1 Por PHP
Utilizamos comandos de PHP para obtener el valor de GPIO de entrada.
Desde un archivo PHP y ejecutándolo con extensión php desde navegador web (Mozila)
obtenemos el valor en pantalla de la variable $salida.
El código de este archivo ( EntradaGPIO65PorPHP.php ) es el siguiente:
<?php
$path="/sys/class/gpio/gpio65/value";
$file=fopen($path,"r");
$salida .=fgets($file);
$salida .=" valor". $path;
print $salida;
fclose($file);
?>
En el fichero se observa que la orden fopen abre el fichero que contiene el valor de GPIO , con
fgets se toma el valor de GPIO y se pasa a la variable salida , por último la orden fclose cierra el
acceso.
6.1.5.2.2.2 Por .phphsh
Con este método conocemos el estado de los GPIO’s a partir de comandos bash.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 6.-Preparando Zedboard.
51/ 90
Dado que no es posible llamar desde html a bash directamente , se realiza a través de
comando Shell_exec de php que ejecuta script bash para así tomar los valores de GPIO’s.
A la hora de automatizarlo hay que tener presente que es necesario crear un .sh con el
comando indicado y llamar a .sh concreto desde una página php general.
6.1.5.2.2.2.1 Script bash Entradas.
Para automatizar estos comandos de Linux , creamos archivo llamado por ejemplo
switch65.sh. Este contiene el siguiente código y se guarda en el directorio
(/var/www/Entradas):
#! /bin/sh -v
echo 65 >/sys/class/gpio/export
echo in >/sys/class/gpio/gpio65/direction
cat /sys/class/gpio/gpio65/valuePara ejecutar este script sin más que teclear $
sh switch65.sh obtendremos el valor en ese instante del switch 1 (GPIO65).
6.1.5.2.2.2.2 .Sh Entrada desde PHP.
Desde un navegador web podemos llamar al script anterior switch65.sh a través de un
fichero .php y obtener el resultado de la consulta. Para ello creamos archivo switch65.php en
el directorio (/var/www/Entradas) en el que escribimos el código:
<?php
$ValorEntradaSwitch65=shell_exec('sudo sh
/var/www/Entradas/switch65.sh');
echo "<pre>$ ValorEntradaSwitch65<pre>";
?>
El resultado obtenido en el navegador web es 0 ó 1 en función de la posición del switch.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 7.-Tareas comunes.
52/ 90
7. Tareas comunes.
En este punto se analizan los trabajos que no son específicos de zedboard y PC. Estos son:
La comunicación por Ethernet entre PC y Zedboard.
El lenguaje HTML pues puede ser utilizado tanto en PC como en Zedboard.
7.1 Comunicación por Ethernet entre PC y Zedboard.
La comunicación por Ehternet entre un PC y Zedboard se realiza a través de cable UTP con
conectores RJ-42 entre os mismo.
En la tabla siguiente se establece los detalles del enlace:
Zedboard PC ( Windows o Ubuntu)
Nombre conexión. INTERNET LAN_ZEDBOARD - -
Protocolo: IPv4-Automático IPv4- Manual IPv4- Manual IPv4-Automático
Dirección IP - 192.168.1.2 192.168.1.107 -
Máscara de red - 255.255.255.0 255.255.255.0 -
Puerta de enlace - 192.168.1.255 192.168.1.255 -
Xillinux viene con driver de Ethernet ya instalado de manera que reconoce directamente la
conexión física y sólo es necesario configurar la IP de Zedboard. En la imagen siguiente se
muestra la configuración Ip de zedboard.
A continuación se muestra los detalles de configuración de PC-Windows.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 7.-Tareas comunes.
53/ 90
El cambio de Ip en Windows no requiere de reinicio sin embargo hay veces que es necesario
deshabilitar la conexión y reconfigurarla. En Linux el cambio de IP requiere de reinicio del
sistema.
Xillinux ( Ubuntu ) permite añadir varias conexiones y seleccionar la operativa. Dado que para
instalaciones es necesario conectarse a Internet , se ha optado por crear dos conexiones una
llamada internet ( que no aparece en la imagen anterior ) y otra LAN-Zedboard.
Desde el desarrollo es interesante trabajar en PC -Windows con configuración automática y en
la Zedboard configuración LAN_Zedboard , de esta forma el PC estará o bien conectado con
Zedboard o Internet sin más que cambiar el RJ-45 pues el negociado de IP se realizará entre los
dispositivos.
7.2 Html
7.2.1 Editores de html.
Es importante manejar el mismo sistema de charset cuadno se trabaja con distintos editores
de páginas: Wordpad. Gedit , notepad ++ …
Para este TFM se ha utilizado Unicode UTF-8.
Word de Windows trabaja por defecto con Windows-1252.
Gedit por defecto tiene seleccionado hacer copias de seguridad . Aparecen con el mismo
nombre de archivo y la misma extensión añadiéndole virgulilla(~). Cuando se elimina el archivo
original, estos siguen manteniéndose por lo que hay que eliminarlos “exprofeso”.
7.2.2 Sensecase
Al llamar a una imagen desde un archivo html el código es sensible a las mayúsculas y
minúsculas.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 7.-Tareas comunes.
54/ 90
7.2.2.1 Notepad ++
Para la codificación de la página web instalamos en el PC ( Windows ) el programa Notepad++.
Para ello : descargo la versión notepad ++ v7.3.2 y otenemos el ejecutable:
Notepad++Installler 64_bitx64.
La instalación es sencilla sin más que dar a siguiente – siguiente y seleccionar si queremos
acceso directo en escritorio. …
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
55/ 90
8. Aplicación web
El funcionamiento de la aplicación a nivel general consiste en llamar desde la página principal
“00_TFM.html” a dos páginas distintas , una llamada “10_Entradas_SW_PB.php” que visualiza
el estado de los switches y pushbottons y otro que llama a “20_salidas_LEDs.php” que permite
conocer el estado y accionar con distintas opciones los LEDs. El funcionamiento de cada página
se describe en los apartados siguientes.
La carpeta pública del servidor web que está dentro del host (192.168.1.2) que corresponde a
Zedboard muestra los siguientes archivos y directorios.
A continuación se estudia la aplicación realizada a nivel de usuario y desarrollador.
1. Manual de Usuario.
2. Desarrollo de aplicación.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
56/ 90
8.1 Manual usuario.
8.1.1 Instalación.
La aplicación se entrega comprimida en formato rar llamada “00_TFM.rar”.
Los archivos contenidos en el “00_TFM.rar” conforman la aplicación y se debe de
descomprimir en el directorio var/www de la tarjeta Zedboard . Esto creará los archivos y
directorios necesarios para que se ejecute. Existen dos formas para hacerlo :
1. Por FTP desde PC que esté conectado a la tarjeta.
2. Directamente desde la Zeedboard por USB (pendrive) o tomandolos desde un
repositorio.
En nuestro caso por rapidez, evitar añadir más aplicaciones y dado que el host (zedboard ) está
accesible físicamente tomamos la opción segunda.
Es de suma importancia darle permisos de lectura a los archivos que sean volcados de lo
contrario será prohibida la ejecución de los mismos.
8.1.2 Ejecución
La tarjeta zedboard debe de estar configurada según indicaciones en el apartado arranque SD
de Zedboard en la memoria:
La ejecución de la aplicación necesita que exista conexión IP con la tarjeta Zedboard. Una vez
confirmada sólo queda llamar a través de navegador web a las páginas que están alojadas en
el servidor web . En nuestro caso definida http://192.168.1.2
Desde varios ordenadores se puede acceder a la aplicación simultáneamente entregando el
servidor la petición de cada uno.
El mando LED realizado desde la página es instantáneo , sin embargo las lectura de los LED’s no
está sincronizada con la orden de mando de encendido/apagado de los LED’s por lo que el
usuario debe tener presente el tiempo de refresco (2s) para confirmar que el mando se ha
hecho correctamente.
La lectura de las entradas (SW’s , PB’s) tienen el mismo tipo de supervisión con el mismo
tiempo de refresco.
8.1.3 Página principal.
Esta página se muestra en la siguiente imagen.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
57/ 90
La página se compone de una cabecera que informa del trabajo y cuestiones académicas .La
parte operativa que sirve para interactuar con el usuario está formada por botones que
aparecen debajo de la frase “página principal” de la página “00_TFM.html” que está en la
dirección siguiente : http://192.168.1.2/00_TFM.html. Desde estos botones podemos llamar a
dos páginas:
1. “Entradas SW’s PB’s “.Este botón dirige al usuario a la página estado de entradas de
switches y pushbottons.
2. “Salidas LEDs”. Desde este botón se acceder al estado y control de salidas LED’s.
8.1.4 Estado de entradas
Esta página se llega a partir del botón “Entradas SW’s PB’s “ de la página principal
http://192.168.1.2/00_TFM.html. y su dirección web es la página
http://192.168.1.2/10_Entradas_SW_PB.php. A continuación se muestra dicha página.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
58/ 90
Como se puede observar el usuario en la primera parte de la columna conoce el estado real de
la lectura de los Switches de la tarjeta Zedboard. Estos están enumerados según indicaciones
que aparecen en el apartado de la memoria: “Supervisión de Switch y pushbotton” .De la
misma forma la siguiente parte de la columna indica los estados de los Pushbottons. Estos a
diferencia de los Switch’s necesitan mantener pulsados el tiempo de refresco para conocer su
estado de pulsado. Sólo son posibles dos estados en los switches y pushbottons.
La página se refresca automáticamente cada 2 s siendo un valor óptimo, puesto que un valor
menor hace que el procesamiento en Zedboard se desborde provocando la salida del
navegador de Zedboard.
Para salir de esta página sólo se debe de dar a la flecha esquina superior sentido izquierda del
navegador que hará regresar a la página principal o bien teclear
http://192.168.1.2/00_TFM.html.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
59/ 90
8.1.5 Estado y botones de control de salidas
Esta página se llega a partir del botón “Salidas LEDs” de la página principal
http://192.168.1.2/00_TFM.html y su dirección web es la página
http://192.168.1.2/20_Salidas_LEDS.php A continuación se muestra dicha página.
En esta página por debajo de la frase “Lectura del valor interno de LED” conocemos el valor de
la orden mandada desde el sistema operativo a la parte hardware (LEds), indicando los estados
de los mismos. Estos estados se refrescan cada 2 s siendo necesario puesto que puede haber
otro usuario que modifique el valor de los mismos al poder trabajar en LAN.
En esta página disponemos de varias opciones de mando de los LED’s. Desde encender y
apagar cada uno de los cuatro Leds hasta encender y a apagarlos todos en conjunto.
La primera fila de botones está ordenada por pareja que actúa sobre LED.
Por ejemplo desde el botón ‘ LED61e ‘ se manda instantáneamente encender el LED que
corresponde a GPIO-61 , abriéndose una página de confirmación de LEDs
“22_23_LED.php”que informa del estado de los LEDS con el valor que tuvieran los LEDS y el
LED61 encendido con un tiempo de refresco de 2s..
Con el botón “LED61a” hace lo mismo que el anterior apagando el LED 61 y seguidamente abre
la página “22_23_LED.php” , confirmado los LEDs y muestra el estado de los LEDs.
Para salir de esta página sólo se debe de dar a la flecha esquina superior sentido izquierda del
navegador que hará regresar a la página principal o bien teclear
http://192.168.1.2/00_TFM.html.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
60/ 90
8.1.6 Confirmación LEDs.
Esta página se llega a partir de los botones que hay en la “Salidas_LEDs.php” de la página
http://192.168.1.2/20_Salidas_LEDS.php . A continuación se muestra dicha página
En la imagen anterior aparece la frase “Encender LED63e” (variará en función del botón
seleccionado en la página “ Salidas_LEDs”) sirviendo para registrar el botón pulsado. Se puede
comprobar en la lectura “Out LED-GPIO XX “ el estado y la marca que posee el sistema
referente al mando de LED.
Esta página se ha previsto que no se refresque cada cierto tiempo pues su función es
transitoria y sirve para confirmar que se ha ejecutado lo que se ha hecho en el botón de la
página “ Salidas Leds”.
Al igual que el anterior los botones de apagado encendido de LED’s de la página
“Salidas_LED’s se comporta igual que los relatados en los párrafos anteriores.
Para salir de esta página sólo se debe de dar a la flecha esquina superior sentido izquierda del
navegador que hará regresar a la página “Salidas_LEDs.php” o bien teclear
http://192.168.1.2/20_Salidas_LEDS.php
8.2 Desarrollo de aplicación.
El desarrollo de la aplicación simplificado consiste en utilizar tecnología Html que llama a
páginas PHP ejecutadas en servidor web y llaman a scripts de Linux-Ubuntu para leer valores
en ficheros o escribir mediante linux.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
61/ 90
8.2.1 Estructuras páginas web.
La aplicación contiene cuatro páginas.
Las páginas se compone de:
1. Una cabecera común que informa del trabajo y cuestiones académicas.
2. Un párrafo característico que distingue a la página.
3. Consulta o botones.
1. La consulta indica estados de SW’s, PB’s y LED’s
2. Los botones son la parte operativa que sirven para interactuar con el usuario
formada por botones que aparecen debajo de la frase característica.
Por ejemplo debajo de la frase “página principal” de la página “00_TFM.html”
que está en la dirección siguiente : http://192.168.1.2/00_TFM.html.
Desde estos botones podemos llamar a dos páginas:
1. “Entradas SW’s PB’s “.Este botón dirige al usuario a la página estado de
entradas ejecutando el archivo “10_Entradas_SW_PB.php”.
2. “Salidas LEDs”. Desde este botón se acceder al estado y control de salidas
LED’s. llamando al archivo “20_salidas_LEDs.php”
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
62/ 90
8.2.2 Funcionamiento.
En el siguiente gráfico se muestra la interactuación entre las distintas páginas con su
funcionalidad.
21_Habilitar
_LEDs.sh
11_Habilitar_SW_PB.sh.
22_23_LED.php
00_TFM.html
/10_Entradas_SW_PB.php
/20_Salidas_LEDS.php
Zedboard
-Xillinux-Xillybus:
Estados
Mandos
PC
-Servidor
web+php
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus 8.- Aplicación web.
63/ 90
8.2.3 Código de páginas web
El código de páginas web de la aplicación se adjunta como anexo..
Anexo nº1: Código página 00_TFM.html.
Anexo nº2: Código 10_Entradas_SW_PB.php.
Anexo nº3: Código 20_Salidas_LED’s.php.
Anexo nº4: Código 22_23_LED.php.
Anexo nº5: Scripts mando LED’s.
Script: 25_LED64e.sh.
Script: 25_LED64a.sh.
Anexo nº6: Código LED 61 intermitencia.
Anexo nº7: Scripts habilitación entradas.
Script: 11_Habilitar_SW_PB.sh.
Script: 21_Habilitar_LEDs.sh.
Anexo nº8: Scripts habilitación salidas.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 9.-Imagen SD TFM.
64/ 90
9. Imagen SD TFM.
Se ha realizado a través de win32Diskimager una imagen de la SD con la aplicación final que se
ha utilizado para este TFM. Para ello se realiza de la siguiente forma:
1º Se crea un archivo vacio con nombre “ImagenSD_TFM_OFP.img”.
2 Se selecciona este archivo.
3º Se selecciona la ubicación de la tarjeta a clonar [I:\].
4º Desde el botón “read” comenzará a crear la imagen.
Obtenemos así el archivo imagen “ImagenSD_TFM_OFP.img”. Este archivo es una copia de
seguridad de la SD del TFM .
Para su volcado en la SD se hace desde “write”.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 10.-Referencias bibliográficas
65/ 90
10. Referencias bibliográficas.
Ref Carpeta local. Web. [1] 01 Xillinux_ A Linux distribution for
Zedboard, ZyBo, MicroZed and SocKit _ xillybus.com.html
http://xillybus.com/xillinux
[2] Getting Started with ZedBoard™ v7.0 http://zedboard.org/sites/default/files/documentations/GS-AES-Z7EV-7Z020-G-V7.pdf
[3] Guia ZedBoard_HW_UG_v2_2 http://zedboard.org/sites/default/files/documentations/ZedBoard_HW_UG_v2_2.pdf
[4] Vivado Design Suite User Guide Release Notes, Installation, and Licensing UG973 (v2016.3) October 5, 2016
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_3/ug910-vivado-getting-started.pdf
[5] 05 Download Ubuntu Desktop | Download | Ubuntu.html
https://www.ubuntu.com/download/desktop
[6] 01 Ref Documentos\06 Vivado Design Suite Evaluation and WebPACK.html
https://www.xilinx.com/products/design-tools/vivado/vivado-webpack.html
[7] Vivado Design Suite - HLx Editions - 2016.3 Full Product Installation
https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/2016-3.html
[8] Vivado Design Suite User Guide Getting Started
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_3/ug910-vivado-getting-started.pdf
[9]
Embedded System Tools Reference Manual .UG1043 (v2014.3) October 1, 2014
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_3/ug1043-embedded-system-tools.pdf
[10] Getting started with Xillinux for Zynq-7000 EPP.
http://xillybus.com/downloads/doc/xillybus_getting_started_zynq.pdf
[11] xillybus.com/custom-ip-factory http://xillybus.com/custom-ip-factory
[12] xillybus_product_brief.pdf http://xillybus.com/downloads/xillybus_product_brief.pdf
[13] xillybus.com/licensing http://xillybus.com/licensing
[14] u-Boot dtb archivo https://www.enmimaquinafunciona.com/pregunta/71285/que-es-un-u-boot-dtb-archivo-y-como-puedo-utilizarlo-beagleboard-xm
[15] xillybus.com/xillinux http://xillybus.com/xillinux
[16] xillybus_getting_started_linux.pdf http://xillybus.com/downloads/doc/xillybus_getting_started_linux.pdf
[17] Ancho de banda Xillybus http://xillybus.com/doc/bandwidth-guidelines
[18] 01 Ref Documentos\18 Download Xillybus for PCIe xillybus_com.mht
http://xillybus.com/pcie-download
[19] xillybus_getting_started_xilinx.pdf http://xillybus.com/downloads/doc/xillybus_getting_started_xilinx.pdf
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 11.-Referencias Software y archivos. 12.- Trabajos futuros.
66/ 90
11. Referencias Software y archivos.
[S1] Unetbootin.
[S2] Xilinx.lic
[S3] xillinux-eval-zedboard-2.0a.zip
[S4] xillydemo.vhd
[S5] Xillydemo.bit
[S6] Boot.bin
[S7] Devicetree.dtb.
[S8] xillinux-1.3.img.gz
[S9] uImage
[S10] win32-disk-imager-0-7-en-win
[S11] teraterm-4.93.exe
[S12] WinSCP.exe
[S13] Información PHP servidor
12. Trabajos futuros.
Supervisar XADC Header de Zedboard.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. 13.- Anexo
67/ 90
13. Anexo.
Anexo nº1: Código página 00_TFM.html.
Anexo nº2: Código 10_Entradas_SW_PB.php.
Anexo nº3: Código 20_Salidas_LED’s.php.
Anexo nº4: Código 22_23_LED.php.
Scripts mando LED’s.
Anexo nº5: Script: 25_LED64e.sh.
Anexo nº5 Script: 25_LED64a.sh.
Anexo nº6: Código LED 61 intermitencia.
Anexo nº7: Scripts habilitación entradas.
Script: 11_Habilitar_SW_PB.sh.
Script: 21_Habilitar_LEDs.sh.
Anexo nº8: Scripts habilitación salidas.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº1: Código página 00_TFM.html
68/ 90
13.1 Anexo nº1: Código página 00_TFM.html
A continuación se entrega el código de la página web 00_TFM.html: <!----------------------------------->
<!-- Inicio página web 00_TFM.html -->
<!----------------------------------->
<!-------------------------------------------------------------------->
<!-- Máster electrónica ,tratamiento señal y comunicaciones -->
<!-- Control y Supervisión Web Gpio’s Zedboard a través de Xillybus -->
<!-- Tutor: Fernando Muñoz Chavero -->
<!-- Alumno: Por Oscar Falcón Pérez -->
<!-------------------------------------------------------------------->
<!-------------------------------------------------->
<!-- Título de la página web presentado en pestaña-->
<!-------------------------------------------- ----->
<title> TFM OFP </title>
<!------------------------------------------------->
<!-- Logo de cabecera de universidad /ETS -->
<!------------------------------------------------->
<![if !vml]><img width=825 height=67
src="TFM_files/image002.jpg" alt=CabecerasLogos.jpg
v:shapes="_x0030__x0020_Imagen"><![endif]></span></b><b
style='mso-bidi-font-weight:normal'><span style='mso-fareast-font-
family:"Times New Roman"'><o:p></o:p></span></b></p>
<!-------------------------------------------------->
<!-- 1º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Centro:</span></b><span
style='mso-fareast-font-family:"Times New Roman"'> E.T.S. de
Ingenierí<!--acento i-->a <!--espacio en blanco --
>             
<!-------------------------------------------------->
<!-- 2º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<o:p></o:p></span><b style='mso-bidi-font-weight:normal'><span style='mso-
fareast-font-family:"Times New Roman"'>Asignatura</span></b><span
style='mso-fareast-font-family:"Times New Roman"'>: Trabajo fin de má<!-
-acento a-->ster. <o:p></o:p></span><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>          Curso:
</span></b><span style='mso-fareast-font-family:"Times New
Roman"'>2016/17.<o:p></o:p></span></p>
<!-------------------------------------------------->
<!-- 3º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Plan:</span></b><span
style='mso-fareast-font-family:"Times New Roman"'> Má<!--acento a-->ster
Universitario en Electró<!--acento o-->nica,
Tratamiento de Señal y Comunicaciones</span></p>
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº1: Código página 00_TFM.html
69/ 90
<!-------------------------------------------------->
<!-- 4º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Tutor:</b><span style='mso-tab-count:1'> </span> Fernando Muñoz
Chavero.<o:p></o:p>   <o:p></o:p></span><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>  Alumno:</b>Ó<!--acento o-->scar Falcó<!--acento
o-->n <span style='font-family:"PMingLiU","serif";mso-bidi-font-
family:PMingLiU'>Pé<!--acento e-->rez.</span>
<!-------------------------------------------------->
<!-- 5º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<br></br> <!-- salto de carro -->
<!-------------------------------------------------->
<!-- 6º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='margin-left:21.3pt;tab-stops:177.2pt'><b
style='mso-bidi-font-weight:normal'><span style='font-size:20.0pt;mso-fareast-
font-family:
"Times New Roman"'>Tí<!--acento i-->tulo: Control y Supervisión
<!--acento o--> <span class=SpellE><span
class=SpellE>Web</span> de <span class=SpellE>GPIO's-
Zedboard</span><o:p></o:p></span></b></p>
<!-------------------------------------------------->
<!-- 7º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<FONT COLOR=grey>
<p class=MsoNormal style='text-indent:21.3pt'><span
style='mso-tab-count:1'> </span> -Página principal. <o:p></o:p></FONT>
</span>
</P>
<!-------------------------------------------------->
<!-- 8º Imagen de la tarjea Zedboard objeto TFM -->
<!-------------------------------------------------->
<p class=MsoNormal style='margin-left:21.3pt;tab-stops:177.2pt'><![if
!vml]><span style='mso-ignore:vglayout;position:
absolute;z-index:-1;left:0px;margin-left:450px;margin-top:19px;width:285px;
height:245px'><img width=350 height=350 src="TFM_files/image003.gif"
alt="http://zedboard.org/sites/default/files/styles/product_slider/public/prod
uct/ZedBoard_RevA_sideA_0_0.png?itok=lslF6leb"
v:shapes="Imagen_x0020_97"></span><![endif]><span style='font-size:20.0pt;
mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
<!-------------------------------------->
<!-- Inicio botón formulario Entradas -->
<!-------------------------------------->
<!-- La orden form siguiente muestra al usuario un botón. Una vez pulsado el
boton abre la página "10_Entradas_SW_PB.php" desde la direccion web indicada
:http://192.168.1.2/10_Entradas_SW_PB.php.----------->
<form action="http://192.168.1.2/10_Entradas_SW_PB.php" method="get">
<p>      <input type="submit" name respuesta"
value="Entradas SW's PB's"/></p></form>
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº1: Código página 00_TFM.html
70/ 90
<!------------------------------------->
<!-- Fin botón formulario Entradas -->
<!------------------------------------->
<!-------------------------------------->
<!-- Inicio botón formulario Salidas -->
<!-------------------------------------->
<!-- La orden form siguiente muestra al usuario un botón. Una vez pulsado el
boton abre la página "10_Entradas_SW_PB.php" desde la direccion web indicada
:http://192.168.1.2/10_Entradas_SW_PB.php.------------------------------->
<form action="http://192.168.1.2/20_Salidas_LEDS.php" method="get">
<p>      <input type="submit" name respuesta"
value="Salidas LEDs "/></p></form>
<p class=MsoNormal style='margin-left:21.3pt;tab-stops:177.2pt'><span
style='font-size:20.0pt;mso-fareast-font-family:"Times New
Roman"'><o:p> </o:p></span></p>
<!----------------------------------->
<!-- Fin botón formulario Entradas -->
<!----------------------------------->
</div>
</body>
</html>
<!--------------------->
<!-- Fin página web -->
<!--------------------->
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº2: Código 10_Entradas_SW_PB.php
71/ 90
13.2 Anexo nº2: Código 10_Entradas_SW_PB.php
<!--------------------------------------------->
<!-- Inicio página web 10_Entradas:SW_PB.php -->
<!--------------------------------------------->
<!-------------------------------------------------------------------->
<!-- Máster electrónica ,tratamiento señal y comunicaciones -->
<!-- Control y Supervisión Web Gpio’s Zedboard a través de Xillybus -->
<!-- Tutor: Fernando Muñoz Chavero -->
<!-- Alumno: Por Oscar Falcón Pérez -->
<!--------------------------------------------------------------------->
<!-------------------------------------------------->
<!-- Título de la página web presentado en pestaña-->
<!-------------------------------------------- ----->
<title> Estados SWITCHES/PUSHBOTTONS</title>
<!------------------------------------------------->
<!-- Logo de cabecera de universidad /ETS -->
<!------------------------------------------------->
<![if !vml]><img width=825 height=67
src="TFM_files/image002.jpg" alt=CabecerasLogos.jpg
v:shapes="_x0030__x0020_Imagen"><![endif]></span></b><b
style='mso-bidi-font-weight:normal'><span style='mso-fareast-font-
family:"Times New Roman"'><o:p></o:p></span></b></p>
<!-------------------------------------------------->
<!-- 1º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Centro:</span></b><span
style='mso-fareast-font-family:"Times New Roman"'> E.T.S. de
Ingenierí<!--acento i-->a <!--espacio en blanco --
>             
<!-------------------------------------------------->
<!-- 2º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<o:p></o:p></span><b style='mso-bidi-font-weight:normal'><span style='mso-
fareast-font-family:"Times New Roman"'>Asignatura</span></b><span
style='mso-fareast-font-family:"Times New Roman"'>: Trabajo fin de má<!-
-acento a-->ster. <o:p></o:p></span><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>          Curso:
</span></b><span style='mso-fareast-font-family:"Times New
Roman"'>2016/17.<o:p></o:p></span></p>
<!------------------------------------------------------------------>
<!-- 3º párrafo de cabecera con datos de máster -->
<!------------------------------------------------------------------>
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Plan:</span></b><span
style='mso-fareast-font-family:"Times New Roman"'> Má<!--acento a-->ster
Universitario en Electró<!--acento o-->nica,
Tratamiento de Señal y Comunicaciones</span></p>
<!-------------------------------------------------->
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº2: Código 10_Entradas_SW_PB.php
72/ 90
<!-- 4º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Tutor:</b><span style='mso-tab-count:1'> </span> Fernando Muñoz
Chavero.<o:p></o:p>   <o:p></o:p></span><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>  Alumno:</b>Ó<!--acento o-->scar Falcó<!--acento
o-->n <span style='font-family:"PMingLiU","serif";mso-bidi-font-
family:PMingLiU'>Pé<!--acento e-->rez.</span>
<!-------------------------------------------------->
<!-- 5º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<br></br> <!-- salto de carro -->
<!-------------------------------------------------->
<!-- 6º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='margin-left:21.3pt;tab-stops:177.2pt'><b
style='mso-bidi-font-weight:normal'><span style='font-size:20.0pt;mso-fareast-
font-family:
"Times New Roman"'>Tí<!--acento i-->tulo: Control y Supervisión
<!--acento o--> <span class=SpellE><span
class=SpellE>Web</span> de <span class=SpellE>GPIO's-
Zedboard</span><o:p></o:p></span></b></p>
<!-------------------------------------------------->
<!-- 7º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<FONT COLOR=grey>
<p class=MsoNormal style='text-indent:21.3pt'><span
style='mso-tab-count:1'> </span> -Lectura de estados de Swiches:
<o:p></o:p></FONT>
</span>
</P>
<!-------------------->
<!-- Inicio scripts -->
<!-------------------->
<!-- ----------------------------------------------------------------- -->
<!-- Iteración para recargar los valores de los switches y pushbottons -->
<!-- 1.- Desde la función de javascript setinterval se va ejecutando
indefinidamente la función definida como refresh() cada cierto tiempo. -->
<!-- 2.- La función refresh()
<!------------------------------------------------------------------------>
<!-- carga la página de nuevo totalmente calculándola cada vez que se
ejecuta. -->
<!---------------------------------------------------------------------- -->
<script type="text/javascript">
var int=self.setInterval("refresh()",3000); <!-- con 100 se cierra web --
>
function refresh()
{
location.reload(true);
}
</script>
<!----------------->
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº2: Código 10_Entradas_SW_PB.php
73/ 90
<!-- Fin scripts -->
<!----------------->
<!---------------->
<!-- Inicio PHP -->
<!---------------->
<?php
///////////////////////
// Inicio //
// Habilitar SW_PB //
//////////////////////
// Los valores de GPIO-SW's Y PB's están en ficheros que no aparecen en
Xillinux.
// Para utilizarlos es necesario reservar los puertos . Para ello se ha hecho
script de Linux que exporta los GPIO's .Desde el comando de PHP ' shell_exec'
se ejecutará el script bash que hará la habilitacion de los puertos GPIOs SW's
y PB's de la tarjeta Zedboard.
//
$ls=shell_exec('sudo sh /var/www/11_Habilitar_SW_PB.sh');
///////////////////////
// Fin //
// Habilitar SW_PB //
///////////////////////
////////////////////////////
// Inicio. //
// Entradas de Switches.//
////////////////////////////
//
// Bucle que presenta consulta de las marcas internas que representan las
entradas de Switches.
//
// Este bucle funciona de la siguiente forma:
// 01.- Posicionamiento de variable Gpio inicial. Empezando por el 65.
// 02.- En tanto el valor de la variable Gpio no sea mayor que 73 debe de
continuar contando de uno en uno siempre que pase y realizar lo siguiente:
// 03.- Inicializar la variable salida para que no tenga en cuenta los valores
anteriores, yaque estos han sido guardados en la variable salidas.
// 04.- En la variable path tomar la ruta del fichero que contiene la marca
interna de Entradas de Switches.
// 05.- Abrir Fichero en modo lectura.
// 06.- Tomar el valor como variable salida que hay en el interior del fichero
abierto.
// 07.- Acondicionar la variable salida para facilitar la comprensión en
lenguaje usuario.
// 08.- Condicionar el valor en funcion de si es 0 vale 'OFF' de lo contrario
vale 'ON'.
// 09.- Volcar el valor en salida. De esta forma la variable es entendida por
operario disminuyendo o eliminando las posibles interpretaciones de cero y
uno.
// 10.- El valor de salida es volcado sobre variable salidas que acumulará la
palabra que será mostrada.
// 11.- El bucle vuelve al principio mientras no se cumpla que la variable
GPIO se mayor a 73.
// 12.- Una vez termina el bucle se presenta la palabra en pantalla.
// 13.- Por último por coherencia se inicializa la variabla salidas por si
fuese necesario su utilización.
//
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº2: Código 10_Entradas_SW_PB.php
74/ 90
$gpio=65;
while($gpio<73){
$salida="";
$path="/sys/class/gpio/gpio$gpio/value";
$file=fopen($path,"r");
$salida .=fgets($file);
// formato de salida comprensible para usuario 0= OFF y 1= ON
if ($salida==0){
$salida='Apagado';
}else {
$salida='Encendido';
}
// Formato de salida de la consulta realizada por el bucle while{ ..}
$salidas .="      <FONT COLOR=grey>In-Switch
GPIO- $gpio: </FONT><FONT COLOR=black> ". $salida.'</FONT><br />';
fclose($file);
$gpio++;
}
// Salida por pantalla de la consulta
print $salidas;
$salidas="";
///////////////////////////////
// fin Entradas de Switches //
///////////////////////////////
?>
<!------------->
<!-- fin PHP -->
<!------------->
<!--------------------------------------------------->
<!-- 11º párrafo de cabecera con datos de máster -->
<!--------------------------------------------------->
<FONT COLOR=grey>
<p class=MsoNormal style='text-indent:21.3pt'><span
style='mso-tab-count:1'> </span> -Lectura de estados de Pushbottons:
<o:p></o:p></FONT>
</span>
</P>
<!---------------->
<!-- Inicio PHP -->
<!---------------->
<?php
////////////////////////////////
// Inicio. //
// Entradas de Pushbottons. //
///////////////////////////////
//
// Bucle que presenta consulta de las marcas internas que representan las
entradas de Pushbottons.
//
// Este bucle funciona de la siguiente forma:
// 01.- Posicionamiento de variable Gpio inicial. Empezando por el 73.
// 02.- En tanto el valor de la variable Gpio no sea mayor que 78 debe de
continuar contando de uno en uno siempre que pase y realizar lo siguiente:
// 03.- Inicializar la variable salida para que no tenga en cuenta los valores
anteriores, yaque estos han sido guardados en la variable salidas.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº2: Código 10_Entradas_SW_PB.php
75/ 90
// 04.- En la variable path tomar la ruta del fichero que contiene la marca
interna de Entradas de Pushbottons.
// 05.- Abrir Fichero en modo lectura.
// 06.- Tomar el valor como variable salida que hay en el interior del fichero
abierto.
// 07.- Acondicionar la variable salida para facilitar la comprensión en
lenguaje usuario.
// 08.- Condicionar el valor en funcion de si es 0 vale 'No pulsado' de lo
contrario vale 'Pulsado'.
// 09.- Volcar el valor en salida. De esta forma la variable es entendida por
operario disminuyendo o eliminando las posibles interpretaciones de cero y
uno.
// 10.- El valor de salida es volcado sobre variable salidas que acumulará la
palabra que será mostrada.
// 11.- El bucle vuelve al principio mientras no se cumpla que la variable
GPIO sea mayor a 78.
// 12.- Una vez termina el bucle se presenta la palabra en pantalla.
// 13.- Por último por coherencia se inicializa la variabla salidas por si
fuese necesario su utilización.
//
$gpio=73;
while($gpio<78){
$salida="";
$path="/sys/class/gpio/gpio$gpio/value";
$file=fopen($path,"r");
$salida .=fgets($file);
// formato de salida comprensible para usuario 0= No pulsado y 1= Pulsado
if ($salida==0){
$salida='No pulsado';
}else {
$salida='Pulsado';
}
// Formato de salida de la consulta realizada por el bucle while{ ..}
$salidas .="      <FONT COLOR=grey>In-Switch
GPIO- $gpio: </FONT><FONT COLOR=black> ". $salida.'</FONT><br />';
fclose($file);
$gpio++;
}
// Salida por pantalla de la consulta
print $salidas;
$salidas="";
///////////////////////////////////
// fin Entradas de Pushbottons //
///////////////////////////////////
?>
<!------------->
<!-- fin PHP -->
<!------------->
</body>
</html>
<!--------------------->
<!-- Fin página web -->
<!--------------------->
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº3: Código 20_Salidas_LED’s.php
76/ 90
13.3 Anexo nº3: Código 20_Salidas_LED’s.php
<!------------------------------------------->
<!-- Inicio página web 20_Salidas_LEDS.php -->
<!------------------------------------------->
<!-------------------------------------------------------------------->
<!-- Máster electrónica ,tratamiento señal y comunicaciones -->
<!-- Control y Supervisión Web Gpio’s Zedboard a través de Xillybus -->
<!-- Tutor: Fernando Muñoz Chavero -->
<!-- Alumno: Por Oscar Falcón Pérez -->
<!--------------------------------------------------------------------->
<!-------------------------------------------------->
<!-- Título de la página web presentado en pestaña-->
<!-------------------------------------------- ----->
<title> Control Supervisión LED's</title>
<!------------------------------------------->
<!-- Logo de cabecera de universidad /ETS -->
<!------------------------------------------->
<![if !vml]><img width=825 height=67
src="TFM_files/image002.jpg" alt=CabecerasLogos.jpg
v:shapes="_x0030__x0020_Imagen"><![endif]></span></b><b
style='mso-bidi-font-weight:normal'><span style='mso-fareast-font-
family:"Times New Roman"'><o:p></o:p></span></b></p>
<!-------------------------------------------------->
<!-- 1º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Centro:</span></b><span
style='mso-fareast-font-family:"Times New Roman"'> E.T.S. de
Ingenierí<!--acento i-->a <!--espacio en blanco --
>             
<!-------------------------------------------------->
<!-- 2º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<o:p></o:p></span><b style='mso-bidi-font-weight:normal'><span style='mso-
fareast-font-family:"Times New Roman"'>Asignatura</span></b><span
style='mso-fareast-font-family:"Times New Roman"'>: Trabajo fin de má<!-
-acento a-->ster. <o:p></o:p></span><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>          Curso:
</span></b><span style='mso-fareast-font-family:"Times New
Roman"'>2016/17.<o:p></o:p></span></p>
<!-------------------------------------------------->
<!-- 3º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Plan:</span></b><span
style='mso-fareast-font-family:"Times New Roman"'> Má<!--acento a-->ster
Universitario en Electró<!--acento o-->nica,
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº3: Código 20_Salidas_LED’s.php
77/ 90
Tratamiento de Señal y Comunicaciones</span></p>
<!-------------------------------------------------->
<!-- 4º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Tutor:</b><span style='mso-tab-count:1'> </span> Fernando Muñoz
Chavero.<o:p></o:p>   <o:p></o:p></span><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>  Alumno:</b>Ó<!--acento o-->scar Falcó<!--acento
o-->n <span style='font-family:"PMingLiU","serif";mso-bidi-font-
family:PMingLiU'>Pé<!--acento e-->rez.</span>
<!-------------------------------------------------->
<!-- 5º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<br></br> <!-- salto de carro -->
<!-------------------------------------------------->
<!-- 6º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='margin-left:21.3pt;tab-stops:177.2pt'><b
style='mso-bidi-font-weight:normal'><span style='font-size:20.0pt;mso-fareast-
font-family:
"Times New Roman"'>Tí<!--acento i-->tulo: Control y Supervisión
<!--acento o--> <span class=SpellE><span
class=SpellE>Web</span> de <span class=SpellE>GPIO's-
Zedboard</span><o:p></o:p></span></b></p>
<!-------------------------------------------------->
<!-- 7º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<FONT COLOR=grey>
<p class=MsoNormal style='text-indent:21.3pt'><span
style='mso-tab-count:1'> </span> Lectura del valor interno de LED's
<o:p></o:p></FONT>
</span>
</P>
<!-------------------->
<!-- Inicio scripts -->
<!-------------------->
<!-- ----------------------------------------------------------------- -->
<!-- Iteración para recargar los valores de los switches y pushbottons -->
<!-- 1.- desde la función de javascript setinterval se va ejecutando
indefinidamente la función definida como refresh() cada cierto tiempo. -->
<!-- 2.- La función refresh()
<!------------------------------------------------------------------------>
<!-- carga la página de nuevo totalmente calculándola cada vez que se
ejecuta. -->
<!--------------------------------------------------------------------- -->
<script type="text/javascript">
var int=self.setInterval("refresh()",3000); <!-- con 100 se cierra web --
>
function refresh()
{
location.reload(true);
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº3: Código 20_Salidas_LED’s.php
78/ 90
}
</script>
<!------------------->
<!-- Fin scripts ---->
<!------------------->
<!------------------->
<!-- Inicio PHP ----->
<!------------------->
<?php
/////////////////////
// Inicio //
// Habilitar LED's //
/////////////////////
// Los valores de GPIO-LED's están en ficheros que no aparecen en Xillinux.
// Para utilizarlos es necesario reservar los puertos . Para ello se ha hecho
script de Linux que exporta los GPIO's LED's.Desde el comando de PHP '
shell_exec' se ejecutará el script bash que hará la habilitacion de los
puertos GPIOs LEDs de la tarjeta Zedboard.
//
$ls=shell_exec('sudo sh /var/www/21_Habilitar_LEDs.sh');
/////////////////////
// Fin //
// Habilitar LED's //
/////////////////////
//////////////////
// Inicio. //
// Estado LEDs. //
//////////////////
//
// Bucle que presenta consulta de las marcas internas que representan los
mandos a LED.
//
// Este bucle funciona de la siguiente forma:
// 01.- Posicionamiento de variable Gpio inicial. Empezando por el 61.
// 02.- En tanto el valor de la variable Gpio no sea mayor que 65 debe de
continuar contando de uno en uno siempre que pase y realizar lo siguiente:
// 03.- Inicializar la variable salida para que no tenga en cuenta los valores
anteriores, yaque estos han sido guardados en la variable salidas.
// 04.- En la variable path tomar la ruta del fichero que contiene la marca
interna de mando de LED.
// 05.- Abrir Fichero en modo lectura.
// 06.- Tomar el valor como variable salida que hay en el interior del fichero
abierto.
// 07.- Acondicionar la variable salida para facilitar la comprensión en
lenguaje usuario.
// 08.- Condicionar el valor en funcion de si es 0 vale 'apagado' de lo
contrario vale 'encendido'.
// 09.- Volcar el valor en salida. De esta forma la variable es entendida por
operario disminuyendo o eliminando las posibles interpretaciones de cero y
uno.
// 10.- El valor de salida es volcado sobre variable salidas que acumulará la
palabra que será mostrada.
// 11.- El bucle vuelve al principio mientras no se cumpla que la variable
GPIO se mayor a 65.
// 12.- Una vez termina el bucle se presenta la palabra en pantalla.
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº3: Código 20_Salidas_LED’s.php
79/ 90
// 13.- Por último por coherencia se inicializa la variabla salidas por si
fuese necesario su utilización.
//
$gpio=61;
while($gpio<65){
$salida="";
$path="/sys/class/gpio/gpio$gpio/value";
$file=fopen($path,"r");
$salida .=fgets($file);
// formato de salida comprensible para usuario 0= Apagado y 1= Encendido
if ($salida==0){
$salida='Apagado';
}else {
$salida='Encendido';
}
// Formato de salida de la consulta realizada por el bucle while{ ..}
$salidas .="      <FONT COLOR=grey>Out LED GPIO-
$gpio: </FONT><FONT COLOR=black> ". $salida.'</FONT><br />';
fclose($file);
$gpio++;
}
// Salida por pantalla de la consulta
print $salidas;
$salidas="";
/////////////////////
// fin estado Leds //
/////////////////////
?>
<!------------->
<!-- fin PHP -->
<!------------->
</head>
<body>
<FONT COLOR=grey>
<p class=MsoNormal style='text-indent:21.3pt'><span
style='mso-tab-count:1'> </span> Encender/Apagar LED's <o:p></o:p></FONT>
</span>
</P>
<!------------------------------->
<!-- Inicio botones formulario -->
<!------------------------------->
<!------------------------------->
<!-- La orden form muestra al usuario varios botones. En funcion del que se
selleciione insertará en la cariable $POST el valor del boton pulsado. Una vez
pulsado el boton abre la página "22_23_LED.php" desde la direccion web
indicada :http://192.168.1.2/22_23_LED.php . Una vez abierta recibe el valor
de $POST y ejecutará el secript asociado. -->
------------------------------->
<form action="http://192.168.1.2/22_23_LED.php"
method="POST">     
<input type="submit" name="LED61e" value="LED61e">
<input type="submit" name="LED61a" value="LED61a">
<input type="submit" name="LED62e" value="LED62e">
<input type="submit" name="LED62a" value="LED62a">
<input type="submit" name="LED63e" value="LED63e">
<input type="submit" name="LED63a" value="LED63a">
<input type="submit" name="LED64e" value="LED64e">
<input type="submit" name="LED64a" value="LED64a">
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Anexo nº3: Código 20_Salidas_LED’s.php
80/ 90
</form>
<form action="http://192.168.1.2/22_23_LED.php"
method="POST">     
<input type="submit" name="ALLOFF" value="ALLOFF">
<input type="submit" name="ALLON" value="ALLON">
<input type="submit" name="LED61INTER" value="LED61einter">
</form>
<!---------------------------->
<!-- Fin botones formulario -->
<!---------------------------->
</body>
</html>
<!--------------------->
<!-- Fin página web -->
<!--------------------->
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. -Anexo nº4: Código 22_23_LED.php
81/ 90
13.4 Anexo nº4: Código 22_23_LED.php
<!-------------------------------------->
<!-- Inicio página web 22_23_LED.php -->
<!-------------------------------------->
<!-------------------------------------------------------------------->
<!-- Máster electrónica ,tratamiento señal y comunicaciones -->
<!-- Control y Supervisión Web Gpio’s Zedboard a través de Xillybus -->
<!-- Tutor: Fernando Muñoz Chavero -->
<!-- Alumno: Por Oscar Falcón Pérez -->
<!--------------------------------------------------------------------->
<!-------------------------------------------------->
<!-- Título de la página web presentado en pestaña-->
<!-------------------------------------------------->
<title> LED Gpio</title>
<!-------------------------------------------------->
<!-- Logo de cabecera de universidad /ETS -->
<!-------------------------------------------------->
<![if !vml]><img width=825 height=67
src="TFM_files/image002.jpg" alt=CabecerasLogos.jpg
v:shapes="_x0030__x0020_Imagen"><![endif]></span></b><b
style='mso-bidi-font-weight:normal'><span style='mso-fareast-font-
family:"Times New Roman"'><o:p></o:p></span></b></p>
<!-------------------------------------------------->
<!-- 1º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Centro:</span></b><span
style='mso-fareast-font-family:"Times New Roman"'> E.T.S. de
Ingenierí<!--acento i-->a <!--espacio en blanco --
>             
<!-------------------------------------------------->
<!-- 2º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<o:p></o:p></span><b style='mso-bidi-font-weight:normal'><span style='mso-
fareast-font-family:"Times New Roman"'>Asignatura</span></b><span
style='mso-fareast-font-family:"Times New Roman"'>: Trabajo fin de má<!-
-acento a-->ster. <o:p></o:p></span><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>          Curso:
</span></b><span style='mso-fareast-font-family:"Times New
Roman"'>2016/17.<o:p></o:p></span></p>
<!-------------------------------------------------->
<!-- 3º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Plan:</span></b><span
style='mso-fareast-font-family:"Times New Roman"'> Má<!--acento a-->ster
Universitario en Electró<!--acento o-->nica,
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. -Anexo nº4: Código 22_23_LED.php
82/ 90
Tratamiento de Señal y Comunicaciones</span></p>
<!-------------------------------------------------->
<!-- 4º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='text-indent:21.3pt'><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>Tutor:</b><span style='mso-tab-count:1'> </span> Fernando Muñoz
Chavero.<o:p></o:p>   <o:p></o:p></span><b style='mso-bidi-font-
weight:normal'><span style='mso-fareast-font-family:"Times New
Roman"'>  Alumno:</b>Ó<!--acento o-->scar Falcó<!--acento
o-->n <span style='font-family:"PMingLiU","serif";mso-bidi-font-
family:PMingLiU'>Pé<!--acento e-->rez.</span>
<!-------------------------------------------------->
<!-- 5º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<br></br> <!-- salto de carro -->
<!-------------------------------------------------->
<!-- 6º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<p class=MsoNormal style='margin-left:21.3pt;tab-stops:177.2pt'><b
style='mso-bidi-font-weight:normal'><span style='font-size:20.0pt;mso-fareast-
font-family:
"Times New Roman"'>Tí<!--acento i-->tulo: Control y Supervisión
<!--acento o--> <span class=SpellE><span
class=SpellE>Web</span> de <span class=SpellE>GPIO's-
Zedboard</span><o:p></o:p></span></b></p>
<!-------------------------------------------------->
<!-- 7º párrafo de cabecera con datos de máster -->
<!-------------------------------------------------->
<br></br> <!-- salto de carro -->
<!---------------->
<!-- Inicio PHP -->
<!---------------->
<?php
///////////////////
// Inicio //
// Mando Leds //
///////////////////
//
// La orden/mando de Encender/Apagar LED se realiza en función del valor
recibido desde el botón del formulario de la página '20_salidas LEDS' que
vuelca el valor del mismo sobre la variable $POST y esta es recibida en esta
página ('22_23_LED.php') como $POST.
// En funcion del valor de variable $POST ejecutará a través del comando de
PHP 'shell_exec' un script bash que hará el encendido o apagado del LED.
// Por último a través del comando de PHP 'echo' se muestra en pantalla lo que
se ha realizado , cambiando este mensaje en función del la acción realizada.
//
if ($_POST['LED61e'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED61e.sh');
echo "      Encender LED61e<br></br>";
}
if ($_POST['LED61a'])
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. -Anexo nº4: Código 22_23_LED.php
83/ 90
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED61a.sh');
echo "      Apagar LED61a<br></br>";
}
if ($_POST['LED62e'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED62e.sh');
echo "      Encender LED62e<br></br>";
}
if ($_POST['LED62a'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED62a.sh');
echo "      Apagar LED62a<br></br>";
}
if ($_POST['LED63e'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED63e.sh');
echo "      Encender LED63e<br></br>";
}
if ($_POST['LED63a'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED63a.sh');
echo "      Apagar LED63a<br></br>";
}
if ($_POST['LED64e'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED64e.sh');
echo "      Encender LED64e<br></br>";
}
if ($_POST['LED64a'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED64a.sh');
echo "      Apagar LED64a<br></br>";
}
if ($_POST['ALLOFF'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED61a.sh');
$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED62a.sh');
$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED63a.sh');
$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED64a.sh');
echo "      Apagado todos LED's<br></br>";
}
if ($_POST['ALLON'])
{
$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED61e.sh');
$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED62e.sh');
$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED63e.sh');
$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED64e.sh');
echo "      Encendido todos LED's<br></br>";
}
if ($_POST['LED61INTER'])
{
echo "      Intermitente<br></br>";
$num=25 ;
$tiempo=0.5; # tiempo en segundos
$sal="sudo sh /var/www/24_25_shs/24_LED61einter.sh $num $tiempo";
$ls=shell_exec($sal);
}
///////////////////
// Fin //
// Mando LEDs //
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. -Anexo nº4: Código 22_23_LED.php
84/ 90
///////////////////
//////////////////
// Estado LEDs. //
// Inicio. //
//////////////////
//
// Bucle que presenta consulta de las marcas internas que representan los
mandos a LED.
//
// Este bucle funciona de la siguiente forma:
// 01.- Posicionamiento de variable Gpio inicial. Empezando por el 61.es el
61.
// 02.- En tanto el valor de la variable Gpio no sea mayor que 65 debe de
continuar contando de uno en uno siempre que pase y realizar lo siguiente:
// 03.- Inicializar la variable salida para que no tenga en cuenta los valores
anteriores, yaque estos han sido guardados en la variable salidas.
// 04.- En la variable path tomar la ruta del fichero que contiene la marca
interna de mando de LED.
// 05.- Abrir Fichero en modo lectura.
// 06.- Tomar el valor como variable salida que hay en el interior del fichero
abierto.
// 07.- Acondicionar la variable salida para facilitar la comprensión en
lenguaje usuario.
// 08.- Condicionar el valor en funcion de si es 0 vale 'apagado' de lo
contrario vale 'encendido'.
// 09.- Volcar el valor en salida. De esta forma la variable es entendida por
operario disminuyendo o eliminando las posibles interpretaciones de cero y
uno.
// 10.- El valor de salida es volcado sobre variable salidas que acumulará la
palabra que será mostrada.
// 11.- El bucle vuelve al principio mientras no se cumpla que la variable
GPIO se mayor a 65.
// 12.- Una vez termina el bucle se presenta la palabra en pantalla.
// 13.- Por último por coherencia se inicialioza la variabla salidas por si
fuese necesario su utilización.
//
$gpio=61;
while($gpio<65){
$salida="";
$path="/sys/class/gpio/gpio$gpio/value";
$file=fopen($path,"r");
$salida .=fgets($file);
// formato de salida comprensible para usuario 0= Apagado y 1= Encendido
if ($salida==0){
$salida='Apagado';
}else {
$salida='Encendido';
}
// Formato de salida de la consulta realizada por el bucle while{ ..}
$salidas .="      <FONT COLOR=grey>Out LED GPIO-
$gpio: </FONT><FONT COLOR=black> ". $salida.'</FONT><br />';
fclose($file);
$gpio++;
}
// Salida por pantalla de la consulta
print $salidas;
$salidas="";
/////////////////////
// fin estado Leds //
/////////////////////
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. -Anexo nº4: Código 22_23_LED.php
85/ 90
?>
<!------------->
<!-- fin PHP -->
<!------------->
<!----------------------->
<!-- Inicio página web -->
<!----------------------->
</body>
</html>
<!--------------------->
<!-- Fin página web -->
<!--------------------->
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. Scripts mando LED’s. -Anexo nº5: Script: 25_LED64e.sh -Anexo nº5 Script: 25_LED64a.sh
86/ 90
13.5 Anexo nº5: Scripts mando LED’s
Los scripts de apagado encendido Ledsvan en pareja de manera que uno es para encendido y
otro es para apagado .
Se considera que con detallar el Script de cada para un LED para el resto es extrapolable sin
más que cambiar el número de GPIO.
13.5.1 Script: 24_LED64e.sh
#! /bin/sh -v
####################################################################
## Máster electrónica ,tratamiento señal y comunicaciones
## Control y Supervisión Web Gpio’s Zedboard a través de Xillybus
## Tutor: Fernando Muñoz Chavero
## Alumno: Por Oscar Falcón Pérez
####################################################################
###################################
## Script linux ecncendido LED ##
###################################
# Indicamos que el carácter de GPIO es de salida
echo out >/sys/class/gpio/gpio64/direction
# Asignamos el valor de 1= encendido al fichero linux que es pasado por
Xillybus al LED.
echo 1 >/sys/class/gpio/gpio64/value
# Indicamos que hemos encendido LED.
echo "encendido LED"
13.5.2 Script: 25_LED64a.sh
#! /bin/sh -v
####################################################################
## Máster electrónica ,tratamiento señal y comunicaciones
## Control y Supervisión Web Gpio’s Zedboard a través de Xillybus
## Tutor: Fernando Muñoz Chavero
## Alumno: Por Oscar Falcón Pérez
####################################################################
################################
## Script linux apagado LED ##
################################
# Indicamos que el carácter de GPIO es de salida
echo out >/sys/class/gpio/gpio64/direction
# Asignamos el valor de 0= apagado al fichero linux que es pasado por Xillybus
al LED.
echo 0 >/sys/class/gpio/gpio64/value
# Indicamos que hemos apagado LED.
echo "apagado LED"
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. - Anexo 6 código LED 61 intermitencia.
87/ 90
13.6 Anexo nº6: Código LED 61 intermitencia
A continuación se detalla el script de Linux que realiza la intermitencia del LED – Gpio61:
Script: 24_LED61einter.sh
#! /bin/sh -v
####################################################################
## Máster electrónica ,tratamiento señal y comunicaciones
## Control y Supervisión Web Gpio’s Zedboard a través de Xillybus
## Tutor: Fernando Muñoz Chavero
## Alumno: Por Oscar Falcón Pérez
####################################################################
#####################################
## Script linux intermitencia LED ##
#####################################
# 1.- Este script se basa en un bucle que comienza desde el valor de 1 hasta
el valor $1 que es una variable recibida desde el primer parámetro de la
función que llama a este script.
# 2.- $1 es el nº de veces que va a repetirse el bucle.
# 3.- El bucle inicialmente comienza asignando al puerto 61 como salida para
poder ser escrito con 1:enciendido o con 0:apagado.
# 4.- El tiempo de retención de encendido es fijado por el comando sleep cuyo
valor depende de la variable $2 que corresponde con el segundo parámetro de la
función que llama a este script.
# 5.- El script continua apagando el LED durante el tiempo de sleep $2 para
volver al principio del bucle.
for i in `seq 1 $1`
do
# Indicamos que el carácter de GPIO es de salida
echo out >/sys/class/gpio/gpio61/direction
# Asignamos el valor de 1= encendido al fichero linux que es pasado por
Xillybus al LED.
echo 1 >/sys/class/gpio/gpio61/value
# detenemos el script un tiempo $2
sleep $2 # si es menor 2 se pìsa con el de la página
echo out >/sys/class/gpio/gpio61/direction
# Asignamos el valor de 0= apagado al fichero linux que es pasado por Xillybus
al LED.
echo 0 >/sys/class/gpio/gpio61/value
sleep $2
# Volvemos al inicio del script.
done
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. - Anexo 7 Habilitación de LEDs. - Script: 11_Habilitar_SW_PB.sh - Script: 21_Habilitar_LEDs.sh
88/ 90
13.7 Anexo nº 7: Scripts habilitación entradas.
Los scripts de habilitación de entradas Switches y pusbottons se corresponden con
“11_Habilitar_SW_PB.sh”. y el de “21_Habilitar_LEDs.sh”habilita las correspondientes a LED’s.
13.7.1 Script: 11_Habilitar_SW_PB.sh
#! /bin/sh -v
####################################################################
## Máster electrónica ,tratamiento señal y comunicaciones
## Control y Supervisión Web Gpio’s Zedboard a través de Xillybus
## Tutor: Fernando Muñoz Chavero
## Alumno: Por Oscar Falcón Pérez
####################################################################
###############################################
## Script linux habilitación de SW's PB's ##
###############################################
# 1.- Este script se basa en un bucle que comienza desde el valor de 65 hasta
el valor 77
# 2.-El bucle ejecuta el comando echo de Linux para reservar el puerto GPIO
correspondiente.
# 3.- El bucle continua hasta llegar a GPIO-77.
###Comienza el bucle
for gpio in 65 66 67 68 69 70 71 72 73 74 75 76 77
do
# Se ejecuta el comando echo de Linux para reservar el puerto GPIO
correspondiente.
echo $gpio >/sys/class/gpio/export
# Fin de Bucle.
done
13.7.2 Script: 21_Habilitar_LEDs.sh
#! /bin/sh -v
####################################################################
## Máster electrónica ,tratamiento señal y comunicaciones
## Control y Supervisión Web Gpio’s Zedboard a través de Xillybus
## Tutor: Fernando Muñoz Chavero
## Alumno: Por Oscar Falcón Pérez
####################################################################
########################################
## Script linux habilitación de LED ##
########################################
# 1.- Este script se basa en un bucle que comienza desde el valor de 61 hasta
el valor 64
# 2.-El bucle ejecuta el comando echo de Linux para reservar el puerto GPIO
correspondiente.
# 3.- El bucle continua hasta llegar a GPIO-64.
###Comienza el bucle
for gpio in 61 62 63 64
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus. - Anexo 7 Habilitación de LEDs. - Script: 11_Habilitar_SW_PB.sh - Script: 21_Habilitar_LEDs.sh
89/ 90
do
# Se ejecuta el comando echo de Linux para reservar el puerto GPIO
correspondiente.
echo $gpio >/sys/class/gpio/export
# Fin de Bucle.
done
TFM: Control y supervisión web de GPIO’s-Zedboard a través de Xillybus Anexo nº8 Scripts habilitación salidas.
90/ 90
13.8 Anexo nº8: Scripts habilitación salidas.
Los scripts de habilitación de entradas Switches y pusbottons se corresponden con
“11_Habilitar_SW_PB.sh”. y el de “21_Habilitar_LEDs.sh”habilita las correspondientes a LED’s.
Script: 41_DeshabilitarSwitchesyPushbottons.sh
#! /bin/sh -v
####################################################################
## Máster electrónica ,tratamiento señal y comunicaciones
## Control y Supervisión Web Gpio’s Zedboard a través de Xillybus
## Tutor: Fernando Muñoz Chavero
## Alumno: Por Oscar Falcón Pérez
####################################################################
####################################################################
## Script de terminal linux que deshabilita las entradas:
## -Switches desde el 65 hasta 72
## -Push bottons desde el 73 al 77
####################################################################
#
# 1º-Realizamos bucle de deshabilitación de los gpios para que esté
# accesible a lectura de procesos de linux.
#
# Inicio de script
for i in 65 66 67 68 69 70 71 72 73 74 75 76 77
# Inicia el bucle desde 65 hasta 77 de uno en uno.
do
# Deshabilita el Gpio con el número de la variable i.
echo $i>/sys/class/gpio/unexport
# Retorna al inicio del bucle mientras no llegue al conteo final.
done
# FIN de deshabilitación de Gpios-Switches.