¿Cómo puedo depurar/obtener salida de un microcontrolador usando cc-debugger?

Estoy trabajando con CC2540 SoC de TI usando CC2540dk-mini . Mi pila de software es:

  • Ubuntu 12.04
  • Compilador SDCC
  • cc-tool para flashear programas a bordo usando cc-debugger

Puedo compilar, construir y flashear firmwares perfectamente (hasta ahora) usando estas herramientas. Pero no sé cómo depurar (alternar puntos de interrupción, ver valores sfr, etc.) o incluso "imprimir" desde CC2540.

El Capítulo 3 de la guía del usuario de CC2540 habla sobre la interfaz de depuración y, al leerlo, noto que la programación flash se realiza utilizando esta interfaz. Entonces... aparentemente para depurar el firmware tendría que extender cc-tool. ¿Suena bien?

Acerca de la impresión: al leer la guía del usuario de sdcc (sección 3.17.2.1) me doy cuenta de que tengo que proporcionar putchar()una función, lo cual tiene sentido. Pero, ¿qué protocolo de bajo nivel debo usar? USART? ¿O algo mas? (¿interfaz de depuración?) ¿Cómo puede hablar el CC2540 con cc-debugger? ¿Cómo cc-debugger puede hablar con Ubuntu?

Todo esto parece un poco vago, pero es porque no tengo experiencia en este "campo" (siempre usé Arduino y nunca antes tuve que ir a este "nivel bajo").

Con Arduino, está adaptando un esquema de comunicación en tiempo de ejecución (serie a través de USB) para hablar brevemente con un cargador de arranque en el chip. Por el contrario, el depurador de CC se comunica con la lógica dedicada en el chip y no está realmente diseñado para la comunicación en tiempo de ejecución desde un programa de usuario. Puede haber una capacidad secundaria específica incorporada para eso. O si no, puede crear un canal de comunicación haciendo que el depurador controle las variables del buzón de correo en busca de información del programa y luego configure un indicador para que el programa sepa que el mensaje ha sido recopilado y puede ser sobrescrito por uno nuevo.
¿Por qué no usar Code composer studio? Obtiene una licencia gratuita con su kit de desarrollo (ver aquí procesadores.wiki.ti.com/index.php/Licensing_-_CCS ), tienen una versión que se ejecuta en Linux. El uso del IDE completo eliminará la complejidad de configurar su entorno de depuración. En cuanto a putchar(), la interfaz de comunicación es su elección, dudo que pueda usar la interfaz del depurador, pero puede elegir entre las interfaces de comunicación disponibles en su micro.

Respuestas (1)

Supongo que está utilizando Code Composer y debería hacerlo (Keil uvision es otra buena opción). Cuando debe seleccionar en la flecha del botón Flash la opción "depurar" (icono de insecto).

ingrese la descripción de la imagen aquí

Entonces, cuando vaya a flashear su MCU, se abrirá una interfaz que muestra el registro y donde puede rastrear los valores de las variables.

Saludos, Mathieu L.