tfm: control y supervisión web de gpio’s-zedboard a través...

90
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 GPIOs-Zedboard a través de Xillybus. Tutor: Fernando Muñoz Chavero. Alumno: Óscar Falcón Pérez.

Upload: tranhanh

Post on 08-Nov-2018

245 views

Category:

Documents


0 download

TRANSCRIPT

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&iacute<!--acento i-->a&nbsp<!--espacio en blanco --

>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

<!-------------------------------------------------->

<!-- 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&aacute<!-

-acento a-->ster. <o:p></o:p></span><b style='mso-bidi-font-

weight:normal'><span style='mso-fareast-font-family:"Times New

Roman"'>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspCurso:

</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&aacute<!--acento a-->ster

Universitario en Electr&oacute<!--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>&nbsp&nbsp&nbsp<o:p></o:p></span><b style='mso-bidi-font-

weight:normal'><span style='mso-fareast-font-family:"Times New

Roman"'>&nbsp&nbspAlumno:</b>&Oacute<!--acento o-->scar Falc&oacute<!--acento

o-->n <span style='font-family:"PMingLiU","serif";mso-bidi-font-

family:PMingLiU'>P&eacute<!--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&iacute<!--acento i-->tulo: Control y Supervisi&oacuten

<!--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&aacutegina 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>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<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>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<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>&nbsp;</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&iacute<!--acento i-->a&nbsp<!--espacio en blanco --

>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

<!-------------------------------------------------->

<!-- 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&aacute<!-

-acento a-->ster. <o:p></o:p></span><b style='mso-bidi-font-

weight:normal'><span style='mso-fareast-font-family:"Times New

Roman"'>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspCurso:

</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&aacute<!--acento a-->ster

Universitario en Electr&oacute<!--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>&nbsp&nbsp&nbsp<o:p></o:p></span><b style='mso-bidi-font-

weight:normal'><span style='mso-fareast-font-family:"Times New

Roman"'>&nbsp&nbspAlumno:</b>&Oacute<!--acento o-->scar Falc&oacute<!--acento

o-->n <span style='font-family:"PMingLiU","serif";mso-bidi-font-

family:PMingLiU'>P&eacute<!--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&iacute<!--acento i-->tulo: Control y Supervisi&oacuten

<!--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 .="&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<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 .="&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<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&iacute<!--acento i-->a&nbsp<!--espacio en blanco --

>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

<!-------------------------------------------------->

<!-- 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&aacute<!-

-acento a-->ster. <o:p></o:p></span><b style='mso-bidi-font-

weight:normal'><span style='mso-fareast-font-family:"Times New

Roman"'>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspCurso:

</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&aacute<!--acento a-->ster

Universitario en Electr&oacute<!--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>&nbsp&nbsp&nbsp<o:p></o:p></span><b style='mso-bidi-font-

weight:normal'><span style='mso-fareast-font-family:"Times New

Roman"'>&nbsp&nbspAlumno:</b>&Oacute<!--acento o-->scar Falc&oacute<!--acento

o-->n <span style='font-family:"PMingLiU","serif";mso-bidi-font-

family:PMingLiU'>P&eacute<!--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&iacute<!--acento i-->tulo: Control y Supervisi&oacuten

<!--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 .="&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<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">&nbsp&nbsp&nbsp&nbsp&nbsp

<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">&nbsp&nbsp&nbsp&nbsp&nbsp

<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&iacute<!--acento i-->a&nbsp<!--espacio en blanco --

>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

<!-------------------------------------------------->

<!-- 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&aacute<!-

-acento a-->ster. <o:p></o:p></span><b style='mso-bidi-font-

weight:normal'><span style='mso-fareast-font-family:"Times New

Roman"'>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspCurso:

</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&aacute<!--acento a-->ster

Universitario en Electr&oacute<!--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>&nbsp&nbsp&nbsp<o:p></o:p></span><b style='mso-bidi-font-

weight:normal'><span style='mso-fareast-font-family:"Times New

Roman"'>&nbsp&nbspAlumno:</b>&Oacute<!--acento o-->scar Falc&oacute<!--acento

o-->n <span style='font-family:"PMingLiU","serif";mso-bidi-font-

family:PMingLiU'>P&eacute<!--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&iacute<!--acento i-->tulo: Control y Supervisi&oacuten

<!--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 "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspEncender 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 "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspApagar LED61a<br></br>";

}

if ($_POST['LED62e'])

{

$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED62e.sh');

echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspEncender LED62e<br></br>";

}

if ($_POST['LED62a'])

{

$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED62a.sh');

echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspApagar LED62a<br></br>";

}

if ($_POST['LED63e'])

{

$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED63e.sh');

echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspEncender LED63e<br></br>";

}

if ($_POST['LED63a'])

{

$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED63a.sh');

echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspApagar LED63a<br></br>";

}

if ($_POST['LED64e'])

{

$ls=shell_exec('sudo sh /var/www/24_25_shs/24_LED64e.sh');

echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspEncender LED64e<br></br>";

}

if ($_POST['LED64a'])

{

$ls=shell_exec('sudo sh /var/www/24_25_shs/25_LED64a.sh');

echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspApagar 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 "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspApagado 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 "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspEncendido todos LED's<br></br>";

}

if ($_POST['LED61INTER'])

{

echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbspIntermitente<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 .="&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<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.