martes, 2 de septiembre de 2014

Tiva C en Ubuntu 14.04


Seguimos con el frenesí instalador.
Ahora le toca el turno al LaunchPad Tiva C series TM4C123G, en Ubuntu 14.04 amd64.

#Create install path
cd Install
mkdir tivaC
cd tivaC

Arm-none-eabi

Hay otros compiladores para arm, pero éste parece ser el más utilizado en este momento. Sirve para cortex M0/0+/3/4; y cortex R4/5/7
https://launchpad.net/gcc-arm-embedded/


#Dependencies:
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
#These are 32 bit dependencies previously provided by ia32-libs, not anymore.

#Download
wget https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q2-update/+download/gcc-arm-none-eabi-4_8-2014q2-20140609-linux.tar.bz2

#Install
tar -xvf gcc*
#cp or mv, as you wish 
sudo cp -r gcc-arm-none-eabi-4_8-2014q2 /usr/local/

#sudo mv -r gcc-arm-none-eabi-4_8-2014q2 /usr/local/ 
#If you need to uninstall, just remove the folder /usr/local/gcc-arm-none-eabi-4_8-2014q2

#Verify
/usr/local/gcc-arm-none-eabi-4_8-2014q2/bin/arm-none-eabi-gcc --version
#Output should be
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.8.4 20140526 (release) [ARM/embedded-4_8-branch revision 211358]
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Referencia:
http://gnuarmeclipse.livius.net/blog/toolchain-install/

Librerías de TI


Ahora que tenemos el compilador, vamos al sitio de texas para descargar y compilar las librerías para la familia tivaC. Buscar sw-tm4c, los enlaces cambian frecuentemente, por ahora está en:
SW-TM4C-2.1.0.12573.exe


Se puede entrar desde:
http://software-dl.ti.com/tiva-c/SW-TM4C/latest/index_FDS.html
o:
http://www.ti.com/tool/sw-tm4c-usbl

Hay que solicitar una licencia (gratuita) de uso, por eso no puedo poner un comando de descarga directa. Con los siguientes comandos ya estamos usando el compilador que instalamos en el paso anterior.

En la referencia anterior recomienda enfáticamente no agregar a la variable de entorno path la ubicación del arm-none-eabi, para que si agregamos otras versiones del compilador a futuro (gcc-arm-none-eabi<>4.8) no haya problemas. No me parece un mal consejo y lo vamos a respetar.
Pero es necesario que el makefile del tivaWare pueda encontrar los binarios para poder compilar las librerías. Por lo tanto exportamos el path pero no hacemos el cambio permanente (no tocamos /etc/environment), tendrá validez solo en la consola utilizada hasta que la cerremos. 
Si en el futuro queremos recompilar la librería con otra versión de gcc-arm-none-eabi, o bajamos una versión más nueva de tivaWare; debemos hacer lo mismo: agregar el path antes de compilar:

#Append temporarily path to arm-none-eabi binaries, 
#just to compile the tivaWare library:
export PATH=$PATH:/usr/local/gcc-arm-none-eabi-4_8-2014q2/bin

#Build
mkdir tivaWare
cd tivaWare/
unzip ../SW-TM4C-2.1.0.12573.exe
make 2>&1 | tee mo
cd ..

LM4flash


Este es el programador/flasher. No es que no se puede programar con el openOCD, pero sugieren este programador por ser más rápido.

#Download
git clone https://github.com/utzig/lm4tools.git

#Install
cd lm4tools/lm4flash/
make
#Now you have the lm4flash binary, copy to usr
sudo cp lm4flash /usr/bin
cd ../..

Referencia:
http://www.incrediblediy.com/2013/04/programming-ti-stellaris-launchpad-on.html

OpenOCD


http://openocd.sourceforge.net/
Este es el depurador que nos va a permitir ejecutar los programas paso a paso. Sería el equivalente a mspdebug para msp430.

#Dependencies
sudo apt-get libftdi-dev libhidapi-dev

#Download
# Check: http://sourceforge.net/projects/openocd/files/openocd/
#Current version is 0.8.0:
wget http://ufpr.dl.sourceforge.net/project/openocd/openocd/0.8.0/openocd-0.8.0.tar.gz
tar xvf openocd-0.8.0.tar.gz
cd openocd-0.8.0/

#Install
#I've just enabled everything I could found:
./configure --enable-ftdi --enable-ep93xx --enable-at91rm9200 --enable-usbprog --enable-presto_libftdi --enable-jlink --enable-vsllink --enable-rlink --enable-dummy --enable-gw16012 --enable-amtjtagaccel --enable-ti-icdi --enable-maintainer-mode --enable-cmsis-dap --enable-hidapi-libusb  2>&1 | tee co
#Output:
OpenOCD configuration summary
--------------------------------------------------
MPSSE mode of FTDI based devices        yes
ST-Link JTAG Programmer                 yes (auto)
TI ICDI JTAG Programmer                 yes
Keil ULINK JTAG Programmer              yes (auto)
Altera USB-Blaster II Compatible        yes (auto)
Segger J-Link JTAG Programmer           yes
OSBDM (JTAG only) Programmer            yes (auto)
eStick/opendous JTAG Programmer         yes (auto)
Andes JTAG Programmer                   yes (auto)
Versaloon-Link JTAG Programmer          yes
USBProg JTAG Programmer                 yes
Raisonance RLink JTAG Programmer        yes
Olimex ARM-JTAG-EW Programmer           yes (auto)
CMSIS-DAP Compliant Debugger            yes

#Build and install
make 2>&1 | tee mo
sudo make install 2>&1 | tee moi
cd ..

udev


echo 'ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="0660", GROUP="plugdev" #tiva launchpad' | sudo tee /etc/udev/rules.d/62-tiva.rules
sudo service udev restart

Verificación


Ahora ya podemos ir a uno de los ejemplos de tivaWare y ver si podemos hacer parpadear un led!!!.
Encufar el tiva launchpad, poner el switch en posición debug:



#Test lm4flash
cd ~/Install/tivaC/tivaWare/examples/boards/ek-tm4c123gxl/blinky/gcc/
lm4flash blinky.bin
#Should return something like:
Found ICDI device with serial: 0E2029AF
ICDI version: 9270

#Test openocd
openocd --file /usr/local/share/openocd/scripts/board/ek-tm4c123gxl.cfg
#Output:
Open On-Chip Debugger 0.8.0 (2014-08-07-17:24)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : This adapter doesn't support configurable speed
Info : ICDI Firmware version: 9270
Info : tm4c123gh6pm.cpu: hardware has 6 breakpoints, 4 watchpoints
#Exit with Ctrl-C

Desafortunadamente no podemos controlar la ejecución desde el openocd escribiendo comandos como con el mspdebug, sino que se debe hacer a traves del puerto 3333 usando gdb. Ver:
http://openocd.sourceforge.net/doc/html/GDB-and-OpenOCD.html#GDB-and-OpenOCD

De todas maneras, con lo anterior ya sabemos que hay conexión, y no vamos a usar openocd y gdb a mano, sino a través de Eclipse.


Configuración de Eclipse


Lo hice siguiendo a la par dos excelentes referencias. La referencia 2 es para la instalación de Stellaris en Ubuntu, que es el antecesor de los micros tiva tm4c.
La referencia 1 indica las modificaciones necesarias en cada paso para configurar los micros tiva tm4c:
  1. http://forum.stellarisiti.com/topic/1745-complete-tiva-ide-using-eclipse-on-mac-including-flash-and-debug/
  2. http://kernelhacks.blogspot.com.ar/2012/11/the-complete-tutorial-for-stellaris_25.html
Para ahorrarles el trabajo de ir siguiendo dos páginas a la vez - siguiendo la forma de trabajar de otros artículos - hice una presentación para la configuración paso a paso:



Al fin!!!, creo que debería funcionar, si hay algún problema con las instrucciones no dejen de mencionarlo en los comentarios y vemos que podemos hacer.

Salud!!!!.

No hay comentarios:

Publicar un comentario