martes, 10 de septiembre de 2019

Raspberry PI 3 JTAG - SVF player - CPLD Altera - Quartus - Parte 1

Introducción.


    Con los pasos descriptos en esta entrada, prepararemos una raspberry pi 3, para que funcione como interfaz jtag. Con ello podremos reproducir archivos SVF, los cuales nos permitirán, entre otros usos, la programación, de CPLD's.

    Todos los pasos detallados fueron realizados desde un Host (mi PC) con distro Debian 9.

Preparación de Raspberry.


     Descargaremos la imagen de Raspbian sin escritorio, ya que no será necesario, desde el siguiente enlace:

https://www.raspberrypi.org/downloads/raspbian/



     A la fecha de esta entrada descargaremos Raspbian Buster Lite.

    Luego descargaremos balenaEtcher para grabar la imagen en una tarjeta SD (Utilicé una de 4GB).

https://www.balena.io/etcher/



    Balena Etcher es muy simple de usar y no necesita mayores explicaciones, que las que el propio programa da.




    Insertamos la SD en nuestra raspberry, y dejamos que realice el proceso de inicialización. (Recordar conectar un monitor, un cable de red y un teclado para el primer arranque).

Nos logueamos con:

    user: pi
    password: raspberry

    Una vez inicada la sesión creamos el archivo "ssh" sin contenido en el directorio "/boot" (sudo nano ssh), luego reiniciamos y ya deberíamos tener acceso remoto por SSH.

Para activar el wi-fi, desde nuestra sesión SSH hacemos:

    pi@raspberrypi:~ $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Nos colocamos al final del archivo e insertamos:

network={
   ssid="My Wifi"
   psk="MyPass"
}

Posteriormente podremos asignar una IP estática (recomendado para este uso) a la conexión Wi-Fi.

Para ello editamos el archivo:

    pi@raspberrypi:~ $ sudo nano /etc/dhcpcd.conf 

y al final del archivo insertamos:

interface wlan0
static ip_address=10.0.0.240/24
static routers=10.0.0.1
static domain_name_servers=10.0.0.1 8.8.8.8 

Por supuesto cada quien asignará las IP acorde a su configuración.

Finalmente, siempre es bueno realizar:

    pi@raspberrypi:~ $ sudo apt update

    pi@raspberrypi:~ $ sudo apt upgrade

UrJtag


Primero instalamos los siguientes paquetes:

    pi@raspberrypi:~ $ sudo apt install git
    pi@raspberrypi:~ $ sudo apt install autoconf
    pi@raspberrypi:~ $ sudo apt install autopoint
    pi@raspberrypi:~ $ sudo apt install libtool
    pi@raspberrypi:~ $ sudo apt install libusb-1.0
    pi@raspberrypi:~ $ sudo apt install libreadline-dev
    pi@raspberrypi:~ $ sudo apt install python-dev

Descargamos con:

    pi@raspberrypi:~ $ git clone git://git.code.sf.net/p/urjtag/git urjtag-git

    pi@raspberrypi:~ $ wget https://ufpr.dl.sourceforge.net/project/urjtag/urjtag/2018.09/urjtag-2018.09.tar.xz

Descomprimimos:

    pi@raspberrypi:~ $ tar -xf urjtag-2018.09.tar.xz

Ingresamos:

    pi@raspberrypi:~ $ cd urjtag-2018.09

Editamos el fichero cmd_bfin.c: 

    pi@raspberrypi:~/urjtag-2018.09 $  nano src/cmd/cmd_bfin.c

Insertamos al inicio del fichero:

    #define _SYS_UCONTEXT_H

Guardamos y salimos.

Luego hacemos:

    pi@raspberrypi:~/urjtag-2018.09 $ ./configure

    pi@raspberrypi:~/urjtag-2018.09 $ make 

    (Esperamos un tiempo, no mucho mas que el que toma preparse un café)

    pi@raspberrypi:~/urjtag-2018.09 $ sudo make install

Finalmente lanzamos con:

    pi@raspberrypi:~ $ sudo jtag




Una vez lanzado el programa, inicializamos los gpio a utilizar:

jtag> cable gpio tdi=13 tdo=19 tck=26 tms=6

Los GPIO corresponden a los siguientes pines de la raspberry

GPIO13 = PIN 33
GPIO19 = PIN 35
GPIO26 = PIN 37
GPIO6 = PIN 31
GND = PIN 39

Conectamos nuestra placa target, la mía es una placa para testeo que fabriqué en torno a una CPLD Altera EPM570, obtenida de equipos dañados.







Hacemos:

jtag> detect

Y en mi caso me devuelve:


Que según el datasheet el valor devuelto es el correcto:


    No obstante para poder grabar la CPLD, urjtag necesita del archivo BSDL correspondiente. Para la CPLD de mi prototipo lo descargué del siguiente enlace:

https://www.intel.com/content/www/us/en/programmable/support/support-resources/download/board-layout-test/bsdl/max2.html



Lo colocamos en alguna carpeta con una ruta simple:

pi@raspberrypi:~/bsd $ 

Nuevamente dentro de jtag:

jtag> cable gpio tdi=13 tdo=19 tck=26 tms=6
jtag> bsdl path /home/pi/bsd
jtag> detect  



Tenemos respuesta.

T'T.




No hay comentarios.:

Publicar un comentario