domingo, 26 de septiembre de 2010

MSPGCC4 + MSPDEBUG + Eclipse en Ubuntu

En este capítulo vamos a explicar cómo integrar el compilador MSPGCC4 y el depurador MSPDEBUG en el entorno de desarrollo Eclipse trabajando en Ubuntu.

Para poder hacerlo, previamente hemos tenido que instalar y configurar los programas necesarios tal y como se explica en la siguiente entrada: MSP-EXP430G2 en Ubuntu.

Todo esto va orientado a poder trabajar con nuestra placa MSP-EXP430G2 LaunchPad directamente desde Eclipse.

Lo primero, es instalar el entorno de desarrollo Eclipse, hay varias formas de hacerlo, la que a mí me ha funcionado es mediante el Terminal:

sudo apt-get install eclipse
Una vez que se instale Eclipse, podemos cerrar el Terminal y abrir el IDE, lo podemos encontrar en la siguiente dirección:

Aplicaciones -> Programación -> Eclipse

Cuando arranque, lo primero que os pedirá en el entorno de trabajo, en este tutorial, vamos a trabajar desde el Escritorio.



La pantalla que se nos mostrará, es algo cómo la que se muestra a continuación:



En caso de no coincidir, no importa mucho, al fin y al cabo, vamos a crear un proyecto nuevo en C. Desde la barra de herramientas:

File -> New -> Project...

Y en la ventana que nos aparece, expandimos la opción C/C++ y escogemos C Project y pulsamos Next.



Nos sale otra ventana, y en Project name, pues ponemos el nombre de nuestro proyecto, en este caso: ParpadeoLed y en el apartado de Project Type, escogemos Executable: Empty Project y por fin, Linux GCC



Dejamos por defecto marcadas las opciones de Release y Debug y pulsamos sobre el botón de Finish



En estos momentos, ya hemos terminado de configurar nuestro proyecto, y podemos ver que en el apartado de Project Explorer vemos que está presente.



Ahora, introducimos al proyecto un archivo en blanco:

File -> New -> Source File

En la ventana de diálogo que se nos ofrece, en Source File ponemos el nombre de nuestro fichero, en nuestro caso: Led.c

· ¡OJO!: Pongáis el nombre que queráis, pero eso sí, el .c final debéis ponerlo siempre o no funcionará nada.



Pulsamos Finish y vemos que ya tenemos el archivo incorporado en nuestro proyecto, el programa a utilizar en este tutorial, es el que se empleó en éste apartado: MSP-EXP430G2 Ejemplo en Ubuntu.



Una vez que tenemos escrito nuestro código, vamos a configurar el IDE de Eclipse para que trabaje con nuestro compilador MSPGCC4 y el depurador MSPDebug con conexión directa a nuestra placa LaunchPad.

En la barra de herramienta:

Project -> Properties

Se nos abre una ventana de configuración, y expandimos el apartado C/C++ Build para seleccionar Discovery Options, y en Compiler Invocation command buscamos la dirección donde hemos instalado nuestro compilador MSPGCC4.

Generalmente está en la dirección:
/opt/msp430-gcc-4.4.3/bin/msp430-gcc-4.4.3
Después, en el menú de la derecha nos dirigimos a Settings y en el menú de la izquierda, tanto en GCC C Compiler y en GCC C Linker, en Command debemos poner lo siguiente:
msp430-gcc-4.4.3 -mmcu=msp430x2012
· NOTA: El microcontrolador que se emplea es el MSP430x2012 que tiene características similares al MSP430G2231, no usamos éste último ya que el compilador todavía no lo soporta en esta versión.

Y en GCC Assembler, ponemos en Command lo siguiente:
msp430-as
Volvemos a GCC C Compiler y nos dirigimos a la opción Directories, donde deberemos incluir la dirección dónde están las librerías, generalmente se disponen el la siguiente dirección:
/opt/msp430-gcc-4.4.3/msp430/include
Llegados hasta aquí, pulsamos sobre el botón Ok. Ya estamos en disposición de compilar nuestro código, desde la barra de herramientas:

Project -> Build All

Donde por Console, nos mostrará la siguiente información:
Building target: ParpadeoLed.elf
Invoking: GCC C Linker
msp430-gcc-4.4.3 -mmcu=msp430x2012 -o"ParpadeoLed.elf" ./Led.o
Finished building target: ParpadeoLed.elf
Como podemos comprobar, todo ha ido perfectamente, ahora sólo nos falta comunicarnos con nuestra placa LaunchPad. Vamos a configurar un depurador externo para tal fin.

Desde la barra de herramientas:

Run -> External Tools -> External Tools Configurations...

Se nos muestra una ventana de diálogo dónde en Name, pondremos el nombre de la conexión, en este caso: LaunchPad.

En Location, pulsamos sobre Browse File System y debemos indicar el lugar dónde hemos instalado nuestro depurador MSPDebug, generalmente, suele estar en la siguiente dirección:
/usr/local/bin/mspdebug
· NOTA: En caso de no encontrarlo (suele estar rebuscado), abrir una ventana nueva y buscar: mspdebug y ver en qué dirección está.

En Working Directory, pulsamos Browse Workspace, navegamos sobre nuestro proyecto y seleccionamos la carpeta Debug. Debe quedar algo cómo lo que se muestra a continuación:
${workspace_loc:/ParpadeoLed/Debug}
En Arguments, escribimos lo siguiente:
rf2500
Al final, la ventana debe quedar configurado tal y como se muestra a continuación:



Llegados a este punto, ya tenemos todo configurado, pulsamos RUN y en la consola si se nos muestra un mensaje cómo el siguiente:

usbutil: unable to find a device matching 0451:f432

Es que no tenemos conectada nuestra LaunchPad al ordenador, por lo tanto, la conectamos y comprobamos que ya hay comunicación. Desde la barra de herramientas:

Run -> External Tools -> LaunchPad

Y por Console, nos mostrará el siguiente mensaje:
Trying to open interface 1 on 002
Initializing FET...
FET protocol version is 30066536
Configured for Spy-Bi-Wire
Sending initial reset...
Set Vcc: 3000 mV
Device ID: 0xf201
Device: MSP430F2013
Code memory starts at 0xf800
Number of breakpoints: 1

Available commands:
= dis hexout opt reset step
break erase isearch prog run sym
cgraph gdb md read set
delbreak help mw regs setbreak

Available options:
color gdb_loop quiet

Type "help " for more information.
Press Ctrl+D to quit.

(mspdebug)
Dónde, en la propia Console, vamos a programar nuestro código anteriormente compilado con la instrucción:
prog ParpadeoLed.elf
La Console nos responde:
prog ParpadeoLed.elf
Erasing...
Programming...
Writing 128 bytes to f800...
Writing 42 bytes to f880...
Writing 32 bytes to ffe0...
(mspdebug)
Y para ver el funcionamiento de nuestro código en la placa LaunchPad, escribimos en Console:
run
Y vemos que nuestro código se ejecuta. En este caso el comando Ctrl+C para interrumpir la comunicación entre el depurador y nuestra placa no funciona, pero para desconectarlo, pulsamos sobre el cuadradito rojo.
En capítulos posteriores, optimizaremos éste IDE para nuestras herramientas instaladas, éste sólo ha sido un pequeño tutorial de un primer contacto entre las herramientas de derrallo integradas en un IDE como Eclipse y nuestra placa LaunchPad.

8 comentarios:

javier dijo...

Hola! Es excelente tu tutorial! Muy bien realizado.
Sólo tengo una duda: Cuando ejecuto el comando prog ParpadeoLed.elf me da error. No pude solucionarlo. Por favor, si me das una mano me salvás. Este es el error:
prog ParpadeoLed.elf
pprog ParpadeoLed.elf
rog: ParpadeoLed.elf: No such file or directory
(mspdebug)
No sé porqué hace eso. Gracias! Saludos desde Argentina.

Manuel Caballero dijo...

Buenas Javier:

Es raro si has seguido todos los pasos, lo acabo de realizar y todo perfecto.

¿Has compilado el código?

¿Tienes todo lo necesario instalado para trabajar desde Ubuntu?

Un saludo y gracias por tu comentario.

javier dijo...

Será que tenía que tener conectado el launchpad mientras configuraba todo? Sigo con el mismo problema. Revisé todos los pasos. Quizá cuando ejecuto alguno de los pasos me da error y no logro verlo. Igual, ya le voy a encontrar una solucion.
Pego a continuación el código que tengo en Consola luego de darle RUN. El micro puesto es un MSP430F2012:
rf2500: warning: can't detach kernel driver: No data available
fet: FET returned error code 4 (Could not find device (or device not supported))
fet: command C_IDENT1 failed
fet: identify failed
fet: FET returned NAK
MSPDebug version 0.18 - debugging tool for MSP430 MCUs
Copyright (C) 2009-2011 Daniel Beer
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Trying to open interface 1 on 002
Initializing FET...
FET protocol version is 30066536
Configured for Spy-Bi-Wire
Set Vcc: 3000 mV
Trying again...
Initializing FET...
FET protocol version is 30066536
Configured for Spy-Bi-Wire
Sending reset...
Set Vcc: 3000 mV
Device ID: 0xf201
Device: MSP430F2012
Code memory starts at 0xf800
Number of breakpoints: 2
fet: warning: message 0x30 failed

Available commands:
= delbreak gdb load opt reset simio
alias dis help locka prog run step
break erase hexout md read set sym
cgraph exit isearch mw regs setbreak

Available options:
color gdb_loop iradix
fet_block_size gdbc_xfer_size quiet

Type "help " for more information.
Press Ctrl+D to quit.

(mspdebug)

Manuel Caballero dijo...

Buenas Javier:

Por lo que veo en esta porción de código:

MSP430F2012:
rf2500: warning: can't detach kernel driver: No data available

No tienes los permisos adecuados para controlar el dispositivo. Este inconveniente se soluciona ejecutándolo como administrados:

sudo mspdebug rf2500

Te recomiendo que te veas el siguiente post:

· MSP-EXP430G2 Ejemplo en Ubuntu, cuya dirección es la siguiente: http://unbarquero.blogspot.com/2010/09/msp-exp430g2-ejemplo-en-ubuntu.html

Ahí encontrarás cómo ejecutar el ejemplo paso a paso y el error que mencionas resuelto.

Un saludo y a ver si solucionamos el problemita pronto.

javier dijo...

Ahí me funcionó!!! Creo que el problema estaba en lo que me decías. Gracias!!!

Te hago dos preguntas.
1) Cada vez que hago un nuevo proyecto, supongamos que es para otro msp430, ¿Debo volver a configurar todo esto de vuelta o sólo cambiar algunas cositas?
2) Aparte del Launchpad, tengo el programador por puerto paralelo. En Windows lo usaba para programar los msp430 mas viejos y robustos que no tienen SpyBiWire. ¿Se puede usar acá con eclipse + mspgcc? ¿Debo configurar algo?

Te pido disculpas por tener tantas dudas, pero soy nuevo en Linux y recién me estoy adaptando.

ALTAMENTE RECOMENDADO ESTE TUTORIAL! FUNCIONA PERFECTAMENTE Y EL AUTOR RESPONDE A LAS DUDAS DE FORMA RÁPIDA Y PRECISA

Manuel Caballero dijo...

Buenas Javier:

Si utilizas otro micro, deberás cambiar la definición, concretamente en esta parte del código:

msp430-gcc-4.4.3 -mmcu=msp430x2012

Para poder decirle al compilador cuáles definiciones emplear a la hora de compilar el código.

Respecto a emplear el puerto paralelo mediante Eclipse, la verdad es que no tengo ni idea, sobre todo por una cosa, si tuvieras los drivers (controladores) necesarios para poder usarlos mediante Ubuntu (o Linux), pues los pasos a seguir sería igual que los que se muestran en este capitulo, pero no creo que existan dichos drivers para Ubuntu.

Me alegro que se haya solucionado tu problema, un saludo y gracias por tu comentario.

Julian Pardo dijo...

hola como estas yo tengo un pequeno inconveniente realizo los pasos pero a la hora de generar la conexion me genera este error user@instant-contiki:~/Downloads/mspdebug-0.22$ sudo mspdebug -d /dev/ttyACM0 uif
MSPDebug version 0.22 - debugging tool for MSP430 MCUs
Copyright (C) 2009-2013 Daniel Beer
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Trying to open /dev/ttyACM0 at 460800 bps...
Initializing FET...
comport: read error: Connection timed out
fet: open failed
Trying again...
Initializing FET...
comport: read error: Connection timed out
fet: open failed

y la verdad no tengo ni la menor idea del porque espero me puedas colaborar con este percance gracias y muy buen el tutorial

Manuel Caballero dijo...

Buenas Julian Pardo:

Por lo que veo:

· comport: read error: Connection timed out

Quiere decir que no es capaz de encontrar la placa, es decir establecer comunicación.

Supongo, que se habrá instalado mal todos los controladores necesarios.

Te recomendaría que instales todo de nuevo y una vez realizado (sigue las instrucciones del siguiente enlace: MSP-EXP430G2 en Ubuntu), lo compruebes con el ejemplito que podrás encontrar en el enlace anterior.

Una vez todo esté correcto, el siguiente paso es instalar la integración a Eclipse.


Un saludo.