¿Qué es un seguimiento de programa MCU?

He leído en algunos lugares sobre la compatibilidad de Atmel con los seguimientos de programas en sus depuradores/MCU de gama alta. ¡Parece ser que algunos de los procesadores AVR32 pueden ser 'rastreados' por el AVROne! programador/depurador. Consulte aquí o este pdf para ver las menciones de la función.

Inicialmente, pensé que esta era una característica específica de atmel, pero después de leer más, parece que su implementación de nanotrace es específica de atmel, mientras que el concepto de traza es común a muchos microcontroladores de gama alta.

¿Alguien podría explicarme qué es esto, por qué sería más útil que las técnicas de depuración tradicionales, como el registro de depuración en UART o el nivel de instrucción paso a paso, y proporcionar algunos recursos sobre cómo usar dicha función? No me importa mucho si los recursos son para los chips Atmel que mencioné, ya que no planeo usar la función en un futuro cercano, solo quiero ser educado y consciente de lo que puede hacer.

Respuestas (2)

Cuando rastrea un programa, el depurador registra saltos y bifurcaciones mientras el programa se está ejecutando. Esto significa que cuando detiene el programa o llega a un punto de interrupción, puede averiguar cómo llegó el programa a este punto. Algunos depuradores también pueden rastrear datos, lo que significa que puede ver el contenido histórico de las variables, no solo el valor actual. Entonces, con la depuración "ordinaria" puede ver que el programa falló debido a un error de "dividir por cero" en la línea 432, pero con el seguimiento puede ver que la línea 432 se ejecutó porque la prueba en la línea 411 fue verdadera y la bifurcación en 422 no se tomó y que la variable n era 12 y 13 antes de que finalmente se pusiera a cero.

El NanoTrace es como un seguimiento normal que se vuelca en la memoria del chip en lugar del puerto AUX para que pueda leerlo con un depurador de bajo costo (lento). Si bien esto le permite gastar menos (~$550) en el depurador, ralentiza el funcionamiento del microcontrolador de destino . Esto solo se convertirá realmente en un problema si está intentando depurar una operación de tiempo crítico. Para la mayoría de los aficionados esto nunca es un problema.

Sin embargo, esto sería más rápido que registrar la depuración a través de UART y el paso a nivel de instrucción realmente no entra en la comparación (aunque generalmente también se realiza a través de la interfaz JTAG).

Básicamente, es una característica común de los microcontroladores con un nombre elegante.

Así que mi pregunta no era específicamente sobre nanotrace. Quiero saber qué puede hacer exactamente un "rastreo regular" y cuándo lo usaría. ¿Qué tipo de información puede "volcar" en el puerto AUX durante un seguimiento que sería útil para la depuración?
Un rastro es como un canal de comunicación con el microcontrolador. Se puede usar para hacer declaraciones printf en el código del microcontrolador que recibirá el IDE durante la depuración. También funciona a la inversa, puede cambiar los valores de algunos registros a través de la interfaz de depuración. Básicamente, hace que el proceso de depuración sea menos un "ok, está hecho, ¿cómo te fue?" y más de un "¿cómo van las cosas en este instante?". Hay un poco más de información aquí - electronicdesign.com/embedded/…