Velocidad del programa con y sin el depurador JTAG

2

Tengo algunos tableros personalizados con un procesador ARM (marvell78100, compatible con armv5), algunos SDRAM y algunos Flash. Estoy tratando de investigar el problema de los tiempos con la SDRAM, ya que parece que el diseño no se realizó correctamente, lo que provoca bloqueos del programa en algunas placas, cada dos horas.

Desafortunadamente, es una situación típica de heisenbug, donde observar el error hace que desaparezca: cuando ejecuto el programa en gdb con un depurador JTAG de peedi, la cantidad de errores parece ser extremadamente reducida.

¿Cuál es la velocidad de un programa que se ejecuta en un depurador JTAG en comparación con la velocidad normal?

Creo que podría encontrar esta información en las especificaciones de las celdas de depuración ARM JTAG, pero no logré encontrar esas especificaciones.

    
pregunta Étienne

1 respuesta

1

Depende del tipo de interfaz jtag que tengas. En mi experiencia, lo que he notado (sucede en MSP430 y Atmel.ARM7TDMI) es que cuando se observan variables o puntos de interrupción, o incluso cualquier tipo de control a través del depurador, el núcleo se detiene periódicamente para ejecutar la exploración de límites y todo lo que. Esto ensuciará bastante con el tiempo. Si tiene un temporizador libre disponible, sugeriría usar su interrupción para alternar un pin cada pocos microsegundos y ver si esto está sucediendo y en qué medida. Minimizar la cantidad de puntos de interrupción y de vigilancia puede ayudar, pero no puedo estar seguro de eso. De hecho, tengo la sensación de que también será objetivo y dependerá del IDE.

Problemas de sincronización como este (acceso a la RAM) Le sugiero que investigue con un osciloscopio. Jtag se usa mejor con eventos, algoritmos y lugares más lentos donde el código se puede detener de forma segura.

    
respondido por el Chintalagiri Shashank

Lea otras preguntas en las etiquetas