Una vez terminada la primera versión de Firmware esta página contendrá las instrucciones para instalar el Firmware y poder compilarlo.
Entre tanto puede acceder al código fuente en GIT, vea la instrucciones en Código Fuente
Evite instalar los tools o hacer el git clone en directorios con espacios. Los espacios son un problema que todavia no resolvimos.
repo:instalacion:cygwin&nofooter
Para compilar para el procesador ARM (por ejemplo para la CIAA-NXP será el LPC4337), debe instalarse el compilador arm-none-eabi-gcc para Windows, o accediendo a al sitio https://launchpad.net/gcc-arm-embedded .Para simplificar el proceso de compilación, es recomendable durante la instalación activar la opción que incluye el path del compilador en la variable de entorno PATH. Caso contrario hay que hacerlo manualmente desde el Panel de Control⇒Sistema⇒Variables de Entorno, típicamente agregando: “C:\Archivos de programa\GNU Tools ARM Embedded\4.8 2014q2\bin” o el path correspondiente a la instalación. Puede verificarse que el PATH está incluido, abriendo una consola de windows (cmd) tal como se mencionó anteriormente.
El hardware de la CIAA viene provisto con el chip FT2232H, que se encarga de hacer un puente entre la interfase JTAG del microcontrolador y el USB que conecta a la PC en el puerto USB dedicado al debug. La herramienta de código abierto OpenOCD (On-Chip Debugger) es la encargada de manejar el chip FT2232H por el USB y a la vez todo lo referido al JTAG. Luego el debugger (GDB) utilizado en nuestro IDE-Eclipse puede hacer su tarea simplemente conectándose el puerto 3333 (TCP) que el OpenOCD tiene en escucha esperando la conexión.
Para descargar el OpenOCD compilado y listo para utilizar (actualmente la versión 0.9.0), puede irse a la zona de descargas de la web de freddiechopin o directamente descargarse del siguiente link
Además, debe tenerse en cuenta que el chip FT2232H posee 2 canales de comunicación independientes (A y B) pero que ambos salen por el mismo USB, es decir, la PC verá 2 dispositivos distintos (en realidad uno compuesto). Uno será el que conecta al JTAG manejado por OpenOCD como fue mencionado, y el otro se verá como un puerto virtual COM. Este último puede servir principalmente para debug.
Al momento de instalar los drivers, debe tenerse en cuenta que funcionará como 2 dispositivos distintos, y por lo tanto cada uno tendrá un driver asociado. Lo primero es instalar los drivers por defecto del fabricante FTDI para puerto virtual (VCP). En el Administrador de Dispositivos deberían aparecer 2 nuevos puertos COM, tal como sigue:
Luego para el canal A (también aparece como 'Converter A' o 'Interface 0'), debe reemplazarse el driver actual de FTDI por otro llamado WinUSB utilizando la aplicación zadig para la versión de Win correspondiente, para que OpenOCD pueda funcionar correctamente. Debe ir al menú 'Options⇒List All Devices', elegir 'USB Serial Converter A' y cambiar el driver nuevo a 'WinUSB', para luego hacer click en 'Reinstall Driver', tal como se ve aquí:
Finalmente 1 de los 2 puertos COM virtuales debería desaparecer, y se crea un dispositivo USB nuevo cuyo driver dejó de ser el de FTDI, quedando todo de la siguiente manera:
Esta solución fue encontrada en: https://github.com/pbatard/libwdi/issues/1
El IDE utilizado para codificar el Firmware en 'C' es Eclipse CDT (C/C++). La versión utilizada actualmente puede descargarse de acá: CDT 8.3.0 for Eclipse Kepler SR2 (se han encontrado problemas con la versión más reciente de Eclipse 'Luna-R' usado con el plug-in para para GNU-ARM-OpenOCD, por lo tanto a la fecha no es recomendable su uso)
Además debe instalarse el plug-in para GNU-ARM-OpenOCD, desde el menú 'Help⇒Install New Software…“, agregando en el sitio de descarga para la instalación la siguiente dirección: http://gnuarmeclipse.sourceforge.net/updates, tal como se muestra a continuación:
La mayor parte de las herramientas se encuentran instaladas por defecto en este caso.
Desde luego en Linux no hace falta instalarlo!
Para compilar para el procesador ARM (por ejemplo para la CIAA-NXP será el LPC4337), debe instalarse el compilador arm-none-eabi-gcc para Linux, o accediendo a al sitio https://launchpad.net/gcc-arm-embedded Para simplificar el proceso de compilación, es recomendable incluir el path del compilador en la variable de entorno PATH. Puede verificarse que el PATH está incluido, abriendo una consola y tecleando './arm-none-eabi-gcc –version' para ver que lo encuentra y en tal caso nos mostrará la versión del mismo.
En este caso sólo hace falta instalar la versión de línea de comando (CLI), por lo que en consola debemos hacer:
sudo apt-get install php5-cli
Para utilizar OpenOCD en Linux debemos compilarlo configurándolo para que funcione con el chip FT2232. Si estamos en un sistema operativo de 64 bits (ej: Ubuntu 64-bits), es necesario instalar primero las siguientes librerías (para 32 bits saltear este paso)
sudo apt-get install libgtk2.0-0:i386 libxtst6:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 libglu1-mesa:i386 libncurses5:i386 libudev1:i386 libusb-1.0:i386 libusb-0.1:i386 gtk2-engines-murrine:i386 libnss3-1d:i386 libwebkitgtk-1.0-0
Ahora si, para 32/64-bits continuamos con el mismo procedimiento. Lo primero que debemos hacer es instalar el driver necesario para el chip FT2232 y el paquete libusb:
sudo apt-get install libftdi-dev sudo apt-get install libusb-1.0-0-dev
Antes de compilar el openocd necesitamos instalar el siguiente paquete:
sudo apt-get install pkg-config
Ahora vamos a configurar e instalar OpenOCD. Utilizaremos la versión 0.9.0. Para descargar y descomprimir los archivos fuente:
wget http://ufpr.dl.sourceforge.net/project/openocd/openocd/0.9.0/openocd-0.9.0.tar.bz2 tar -xvjf openocd-0.9.0.tar.bz2
Finalmente compilamos OpenOCD para que funcione con nuestro chip FT2232:
cd openocd-0.9.0 ./configure --enable-ftdi make sudo make install
Para utilizarlo debemos ejecutar:
openocd -f <archidodeconfiguración>
Por ejemplo:
openocd -f CIAA/Firmware/modules/tools/openocd/cfg/ciaa-nxp.cfg
Además, debe tenerse en cuenta que el chip FT2232H posee 2 canales de comunicación independientes (A y B) pero que ambos salen por el mismo USB, es decir, la PC verá 2 dispositivos distintos (en realidad uno compuesto). Uno será el que conecta al JTAG manejado por OpenOCD como fue mencionado, y el otro se verá como un puerto serie por USB. Este puerto debería encontrarse en '/dev/ttyUSB', y puede servir para principalmente para debug.
El IDE utilizado para codificar el Firmware en 'C' es Eclipse CDT (C/C++). La versión utilizada actualmente puede descargarse de acá: CDT 8.3.0 for Eclipse Kepler SR2 (se han encontrado problemas con la versión más reciente de Eclipse 'Luna-R' usado con el plug-in para para GNU-ARM-OpenOCD, por lo tanto a la fecha no es recomendable su uso). Notese que la versión utilizada requiere tener instalado Java, ante cualquier inconveniente hay que verificar que el mismo se encuentre instalado.