Envío de información de depuración desde MSP430 a CCS Console

Estoy depurando un código escrito para el MSP430F2132, que tiene muy poca memoria flash disponible para el programa. Para realizar una depuración adecuada, debo enviar información a un terminal para que pueda almacenarse y verse en un momento posterior. Normalmente usaría printf o un comando similar (quizás putchar) y lo vincularía a la consola CCS 6.1. Sin embargo, debido a la falta de memoria de programa en el micro, no puedo usar estas funciones. Tampoco tengo la opción de modificar la placa para hacer uso de un canal UART incorporado en el micro. Estoy conectado al micro usando la interfaz de depuración USB MSP-FET430UIF, que supuestamente implementa una interfaz UART de canal trasero, pero creo que esto requiere conexiones especiales al objetivo que no tengo. ¿Tengo alguna opción que use muy poca memoria que me permita almacenar información de depuración? Solo necesito enviar dos enteros largos en cada ciclo.

EDITAR:

Luego de una inspección adicional (el diseño no era originalmente mío), noté que las "conexiones especiales al objetivo" requeridas para el MSP-FET430UIF (simplemente a los pines UCA0RXD y UCA0TXD en el micro objetivo) existen, pero las señales se convierten a RS-485 utilizando transceptores en la placa de interfaz (un dispositivo de prueba) y la placa de destino. Tal vez pueda usar el UART de canal trasero FET430UIF después de todo, aunque todavía tengo que encontrar buenas instrucciones sobre cómo hacerlo. Si alguien aquí tiene experiencia haciendo esto y puede ofrecer orientación, sería muy útil.

No dices qué sucede finalmente con esas señales RS-485. ¿Puedes llegar a las señales TXD/RXD (con niveles CMOS de 3,3 V) de alguna manera?
Hice un poco más de rastreo y parece que estas señales TXD/RXD no están conectadas al FET430 después de todo, como originalmente pensé que estaban. En su lugar, se conectan a un chip RS232-USB en la placa de interfaz y se pasan por otro cable USB. Creo que ese puede ser mi boleto, no creo que haya una forma en mi configuración actual de usar el UART de canal posterior FET430
El UART de canal posterior es inherentemente un UART simple después de todo. En cualquier escenario, terminará, muy probablemente, con un puerto COM en su PC, y es irrelevante cómo lo obtendrá. Simplemente use cualquier UART que pueda obtener de su objetivo y estará bien. GL!
Puede que no sea tan bueno como lo desea, pero si tiene espacio, puede meter datos en un búfer de RAM, luego pausar el programa e inspeccionarlo con el depurador (tal vez algún tiempo después de que ocurriera el evento importante).
De hecho, probé esto, pero el tamaño del búfer tenía que ser extremadamente pequeño debido a la cantidad de RAM disponible en el dispositivo. Eventualmente pude hablar con el micro a través de una conexión UART separada (no a través del FET430), que realmente hizo todo lo que necesitaba. Simplemente envié los datos tal como llegaron y los recopilé usando PuTTY
pregunta potencialmente relacionada (?): MSP430 printf() a través de Spy-Bi-Wire se bloquea
@NickAlexeev Me temo que no, el problema no es que printf() haga que la interfaz se cuelgue, el problema es que ocupa demasiado espacio de código y no encaja en mi diseño. Estaba buscando un método alternativo para enviar entradas largas a la consola CCS que no ocupe tanto espacio de código.
Cuando trabajo con MSP430, siempre he depurado el software con la ventana de observación CCS, funciona bien y permite actualizaciones casi en tiempo real. Tal vez esto sea suficiente para ti también.

Respuestas (1)

Si tiene una conexión JTAG en funcionamiento, puede usar el depurador incorporado de CCS para todas sus necesidades de depuración.

Simplemente almacene sus valores de depuración en una matriz y, opcionalmente, configure una cláusula "if" con __no_operation() para un punto de interrupción para verificar qué sucede periódicamente. O simplemente pause la ejecución después de regresar y ver los datos recopilados.

Alternativamente, en lugar de usar el printf hambriento de memoria para stdout, puede escribir en stderr con fprintf. Es mucho más lento y no utiliza almacenamiento en búfer, pero para los informes de estado periódicos puede ser suficiente.