Herramientas de usuario

Herramientas del sitio

Traducciones de esta página:

desarrollo:firmware:instalacion_sw

Instalación del Firmware

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

Windows

Evite instalar los tools o hacer el git clone en directorios con espacios. Los espacios son un problema que todavia no resolvimos.

Cygwin

Instalando Cygwin y sus paquetes

Para compilar (gcc), para el Make y otras utilidades, deberá bajar cygwin. Por compatibilidad entre todos los sistemas recomendamos instalar Cygwin de 32 bits (setup-x86.exe) y luego seguir los siguientes pasos.

  • Instalar típicamente con la siguinte configuración en el instalador:
    • Install from Internet
    • Root Directory: 'C:\cygwin' (carpeta por defecto para cygwin), Install for All the Users
    • Local Package Directory: 'C:\Documents and Settings\User\Mis documentos\Descargas' (carpeta por defecto para las descargas)
    • Direct Connection (conexión por defecto, cambiarlo en caso de usar proxy u otra conexión)
    • Download Site: 'http://mirrors.kernel.org' (servidor seguro para descargar los paquetes)
  • Agregar paquetes (packets) adicionales, es decir, herramientas necesarias que no se incluyen por defecto como se explica a continuación

Para realizar esto, se utiliza el mismo instalador setup-x86.exe que a la vez es el gestor de paquetes. A continuación se muestra como aparecen los paquetes Captura.

Por ejemplo, para incluir el paquete cmake en la instalación debería ver algo así Captura.

  • Deben incluirse los siguientes paquetes (Packets) generalmente de categoría Devel o Utils, es decir, desarrollo o utilidades. Estos son :
    • autoconf
    • binutils
    • bzip2
    • coreutils
    • cygutils
    • cygrunsrv
    • diffutils
    • dos2unix
    • doxygen
    • gcc-core
    • gcc-g++
    • gcc4
    • gccmakedep
    • gdb
    • git
    • gzip
    • libusb-1.0
    • libusb-devel
    • libusb-win32
    • make
    • man
    • perl
    • php
    • python
    • ruby
    • ruby-rake
    • tar
    • vim
    • zip

Para verificar los paquetes que tenemos instalados puede escribirse en la consola del Cygwin lo siguiente

cygcheck -c -d           ☜ Listar rápido los paquetes instalado, no verifica integridad
Path para cygwin

Debe verificarse que el path a cygwin\bin se encuentra incluido en la variable de entorno del sistema PATH y en la variable CYGWIN. Caso contrario hay que hacerlo manualmente desde el Panel de Control⇒Sistema⇒Variables de Entorno, típicamente agregando: “C:\cygwin\bin” o el path correspondiente a la instalación en PATH y lo mismo en la variable CYGWIN. Puede verificarse que el PATH está incluido, y que lo mismo ocurra con CYGWIN, abriendo una consola de windows (cmd) y escribiendo:

echo %PATH%           ☜ Ver el contenido de la variable de entorno PATH
echo %CYGWIN%         ☜ Ver el contenido de la variable de entorno CYGWIN

Por ejemplo, para CYGWIN se vería algo como: Captura de los comandos mencionados.

También es recomendable incorporar en la variable PATH dentro del entorno del 'cygwin' algunos otros directorios adicionales. Esto se debe agregar al final del archivo ubicado tipicamente en 'C:\cygwin\etc\bash.bashrc':

cd /cygdrive/c/ciaa/firmware   ☜ Ej: Iniciar el prompt en el path del proyecto CIAA
export PATH=/cygdrive/c/cygwin/bin:$PATH ☜ Ej: El path al 'bin' precede el resto (workaround para comando 'find')
export PATH=$PATH:"/cygdrive/c/Archivos de programa/GNU Tools ARM Embedded/4.8 2014q2/bin" ☜ Ej: path al compilador (ver más adelante)
export PATH=$PATH:"/cygdrive/c/ciaa/openocd-0.9.0/bin/" ☜ Ej: path al 'openocd'
alias openocd='/cygdrive/c/ciaa/openocd-0.9.0/bin/openocd.exe' ☜ Ej: path completo al 'openocd' (ver más adelante)

Luego puede verificarse el valor de PATH dentro de 'cygwin', escribiendo:

echo $PATH ☜ Imprime en pantalla el contenido de PATH

Compilador ARM-GCC

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.

OpenOCD

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:

Captura.

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í:

Captura.

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:

Captura.

Nota: Si Falla Zadig, mostrando el mensaje “The driver installation failed.” entonces intente bajando una versión anterior de Zadig en el siguiente link: http://sourceforge.net/projects/libwdi/files/zadig/zadig_v2.0.1.154.7z/download

Esta solución fue encontrada en: https://github.com/pbatard/libwdi/issues/1

IDE - Eclipse

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)

Plug-In GNU-ARM-OpenOCD para Eclipse

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:

Captura.

Linux

La mayor parte de las herramientas se encuentran instaladas por defecto en este caso.

Cygwin

Desde luego en Linux no hace falta instalarlo! ;-)

Compilador ARM-GCC

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.

PHP

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

OpenOCD

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.

IDE - Eclipse

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.

Plug-In GNU-ARM-OpenOCD para Eclipse

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:

Captura.

desarrollo/firmware/instalacion_sw.txt · Última modificación: 2016/07/31 12:41 por cpantelides