martes, 21 de marzo de 2017

tutorial ZYBO-Linux(III): Connecto to Zybo Board, usar los periféricos. Prender un led en dispositivos Zynq

Esta es la tercera parte del tutorial ZYBO-Linux para arrancar Linux desde la placa de desarrollo ZYBO de Digilent y crear pequeñas aplicaciones. Este tutorial consta de varias partes:
A continuación describiré los pasos para iniciar Linux en la ZYBO por una SD y comunicarse por Ethernet con la computadora. Después usaremos los periféricos de la placa como un led o un botón con sencillos programas.


0- Tener creada una SD con la imagen de Linux-Debian hecho en el paso I y cambiar el Jumper JP5 a la posición SD.

1-Conectar la ZYBO a través de  Ethernet al ordenador. Si tu ordenador carece de puerto Ethernet necesitarás un adaptador USB.
adaptador USB-Ethernet

2- Configurar la conexión de red en la configuración de red y seleccionar Ethernet.


Introducir las siguientes direcciones de red en la configuración de IPv4 e IPv6:
IPv4
Ignorar la Ipv6
IPv6

3- Abrir el terminal en una computadora con linux (Debian/Ubuntu, etc) y conectar via ssh (secure shell) con la placa. Para ello escribiremos el siguiente comando en la consola:
 ssh root@192.168.1.120  

 La dirección ip por defecto en la imagen cargada es 192.168.1.120. Esto puede variar con otras imágenes o configuraciones.

4- Para acceder la carpeta de archivos root para ver su contenido e incluir los ficheros c allí abrir una carpeta cualquiera (Nautilus) y hacer click en "connect to Server"
Introducir la IP del puerto de Ethernet anterior como se puede ver en la imagen:



Escribir “sftp://192.168.1.120” y conectar.
A continuación se deberá de abrir una carpeta de este tipo:

5- Crear un nuevo documento de texto en la carpeta raíz de la SD. Abriendo la carpeta y haciendo click derecho, seleccionamos creamos un nuevo archivo y lo renombramos para este ejemplo como blink.c

6- Escribir el código en el archivo de texto. Haciendo doble click sobre el archivo blick.c se abrirá con un bloc de notas vacío. Allí procedemos a insertar nuestro código.
Bloc de notas vacío

El siguiente ejemplo debe encender y apagar el led conectado al puerto MIO7


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
/* Blinking led example
www.dieBotReise.blogspot.com*/
int main ()
{
 int exportfd = open( "/sys/class/gpio/export" , O_WRONLY );
 if( exportfd < 0)
 {
  printf( "Cannot open GPIO to export it \n");
  exit (1);
 }
 write( exportfd ,"913",4);
 close( exportfd );
 printf(" GPIO exported successfully \n " ); 

 /* Get the GPIO value ready to be toggled */
 int valuefd = open( "/sys/class/gpio/gpio913/value" , O_RDWR );


 if ( valuefd < 0){
  printf(" Cannot open GPIO value \n " );
  exit (1);
 }
 printf(" GPIO value opened , now toggling ...\n " );
 /* toggle the GPIO forever , press control + c to stop it */
 while (1)
 {
  int i ;
  for(i=0;i<0xFFFFFF;i++){} 
  write( valuefd , "1" , 2);
  for(i=0;i<0xFFFFFF;i++){}
  write( valuefd , "0" , 2);
 }
}
Debe de quedar de esta manera:


7- Guardar y compilar nuestro programa. Para compilar usando el compilador preinstalado de linux gcc abrimos el terminal y escribimos el comando:

 gcc blink -o blink  

Ahora si todo se compiló sin errores se debería mostrar una nueva línea de comando como en la siguiente imagen.
Compilación sin errores

En el caso en que hubiera algún error en el código nos saldría un mensaje explicando el error como el de la figura de abajo:

Compilación con errores
8- Ejecutar el programa. Suponiendo que el programa ha compilado bien con el siguiente comando se ejecutará el código:

 ./blink  


Y el led empezará a parpadear. Para parar la aplicación hay que pulsar cntrl+C!!








1 comentario:

  1. Buenos días,

    Muy buen post! Al intentar realizar la conexión SSH me pide contraseña. ¿Cual es?

    Gracias!

    ResponderEliminar