FPGA Libre
EnglishEspañolS.F. Summary
Hosted by:
Get Free FPGA development tools at SourceForge.net. Fast, secure and Free Open Source software downloads

INTI-CMNB MILK Open Hardware
Licencia Creative Commons
JTAG
JTAG es un protocolo serie originalmente pensado para realizar la verificación de circuitos electrónicos (boundary scan). En la actualidad es ampliamente usado para configurar dispositivos y para la depuración de CPUs embebidas.

El FT2232H es muy popular para la implementación de cables JTAG, por lo que existe una gran variedad de implementaciones y aplicaciones. Muchos de los cables JTAG abiertos se basan en el Amontec JTAGKey, por ejemplo el Opendous. Por esta razón se pensó en implementar un plug-in con un circuito similar. Sin embargo, todas las aplicaciones que se probaron hasta el momento mostraron que no era necesario. Por esta razón sólo se implementó un plug-in que es básicamente un conector, cables y algunos resistores.

JTAG base:

Este plug-in puede usarse con el siguiente software:

Probablemente pueda usarse con otros programas y/o sistemas operativos, las combinaciones mencionadas fueron verificadas y en los links encontrará detalles de configuración para cada software.

Debido a que el FT2232H implementa JTAG en forma nativa, y a que los programas mencionados pueden ser configurados (o al menos engañados ...) este plug-in no necesita de ningún circuito complejo. La configuración mostrada en este esquemático fue usada exitósamente en todos los casos.

Al no haber un consenso en cuanto al conector JTAG se decidió implementar este plug-in utilizando cables separados (flying leads):

JTAG base (esquemático)
JTAG base
JTAG Base


OpenOCD:

OpenOCD es un proyecto de software libre. Su nombre deriva de Open On-Chip Debugger y se autodefine como "Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing". Su punto más fuerte es la depuración in-circuit, en particular para CPUs de la arquitectura ARM.

Todas las pruebas realizadas fueron llevadas a cabo utilizando Debian GNU/Linux. OpenOCD puede compilarse para Mac OSX y Windows, pero no fue verificado el funcionamiento de MILK en estos entornos.

La versión de OpenOCD utilizada fue la v0.7.0 (2013-04-09-11:07).

Las pruebas se llevaron a cabo con una Beagleboard xM y con una Atmel SAM3U-EK.

A continuación se describe como configurar OpenOCD y MILK para que funcionen juntos. Todos los archivos mencionados se encuentran disponibles en este archivo ZIP.

  1. Para lograr una mejor integración con OpenOCD el método utilizado consistió en cargar una configuración específica en la memoria flash de MILK. De esta manera el OpenOCD puede verificar que está dialogando con MILK y no con otro dispositivo basado en el FT2232H. Para esto es necesario grabar el contenido de eeprom.MilkJTAG_u en la flash de MILK. En Debian GNU/Linux esto se puede hacer utilizando la herramienta ftdi_eeprom (paquete ftdi-eeprom), y la configuración MilkJTAG_u.conf, de la siguiente manera:
    $ ftdi_eeprom --flash-eeprom MilkJTAG_u.conf

  2. Se debe configurar OpenOCD para reconocer un nuevo cable. El archivo milk-basic.cfg describe al plug-in JTAG base conectado en el canal A de MILK y milk-basic-B.cfg al mismo plug-in, pero conectado en el canal B. Estos archivos deben copiarse al directorio de configuración de OpenOCD (por ejemplo: ~/.openocd/interface/ftdi/).
  3. Una vez configurado basta con invocar OpenOCD indicando la configuración de nuestro cable con la opción -f. Así, por ejemplo, para una Beagleboard xM conectada al canal B (ya que funciona con un JTAG de 1,8 V) usamos:
    $ openocd -f interface/ftdi/milk-basic-B.cfg -f board/ti_beagleboard_xm.cfg


UrJTAG:

UrJTAG es un proyecto de software libre. Su nombre deriva de Universal JTAG y se autodefine como "Universal JTAG library, server and tools". Su punto más fuerte es su soporte para una gran variedad de dispositivos, incluyendo FPGAs.

Todas las pruebas realizadas fueron llevadas a cabo utilizando Debian GNU/Linux. UrJTAG puede compilarse para otros UNIX y Windows, pero no fue verificado el funcionamiento de MILK en estos entornos.

La versión de UrJTAG utilizada fue la v0.10+r2007 (Debian).

Las pruebas se llevaron a cabo con FPGAs de Xilinx, mayormente Virtex 4.

Utilizando el plug-in JTAG base MILK puede usarse como un cable JTAGKey. Es decir, que para utilizar el canal A basta con seleccionar el cable de la siguiente manera:

cable jtagkey vid=0x0403 pid=0x6010

Y para el canal B:

cable jtagkey vid=0x0403 pid=0x6010 interface=1


Xilinx iMPACT:

El entorno de trabajo ISE de Xilinx utiliza la herramienta iMPACT para configurar las FPGAs y/o las memorias flash asociadas.

Esta herramienta se encuentra disponible para Linux y Windows, sin embargo, todas nuestras pruebas fueron realizadas en Linux.

Las versiones actuales de iMPACT soportan cables basados en FT2232H.

Es posible utilizar iMPACT helper. En este caso podemos hacerle creer a iMPACT que en el puerto LPT2 tenemos un cable paralelo, que en realidad será MILK. Para esto debemos configurar el driver creando un archivo ~/.libusb-driverrc que diga:

LPT2 = FTDI:0403:6010

Esto sirve para el canal A de MILK. Si deseamos utilizar el canal B basta con poner:

LPT2 = FTDI:0403:6010:2

Usando este mecanismo se pudo configurar FPGAs Spartan 3E, Spartan 6 y Virtex 4.

Esta solución no requiere cambios en MILK, aunque la velocidad de transferencia no es la óptima. Si deseamos sacarle el máximo jugo a iMPACT+MILK es posible utilizar el driver de Digilent que incluye iMPACT. Basta con clonar un cable Digilent o hacerle creer al plug-in de iMPACT que nuestro cable es uno de Digilent. Tuvimos éxito imitando un cable Digilent HS1. Para más información sobre este método por favor contactarnos.


webmaster.

Valid HTML 4.01! Valid CSS! GIMP Any browser! SourceForge.net Logo

Copyright © 2005-2017 proyecto FPGALibre.
Generated using CAL v0.2.0 and ARENA v0.1.0 on jue ago 17 09:24:16 -03 2017