Cálculo del tiempo empleado por una función en aplicaciones de microcontroladores

5

Me gustaría escribir un perfilador simple para mi microcontrolador STM32F100VE. He visto que puedo incluir time.h y en función de las funciones estándar de c puedo usarlo, pero estaba confundido acerca de _CLOCKS_PER_SEC_ 1000. No estoy seguro de si ese enfoque funcionará o no.

¿Cómo se podría medir el tiempo que tardó una función en la aplicación de microcontrolador?

    
pregunta Ahmed Saleh

3 respuestas

4

La maniobra más básica para funciones complicadas es utilizar los temporizadores a bordo.

Dependiendo de cómo los configure, puede hacer que cuenten exactamente la cantidad de ciclos de reloj que se requieren para que una determinada función se ejecute. Simplemente lea el temporizador antes de la llamada a la función y luego otra vez después de la llamada a la función.

Deberá revisar el código de ensamblaje para saber cuánto tiempo se debe quitar el temporizador para las llamadas de lectura, pero si es una función prolongada o si no le importa estar en un par de ciclos de reloj, entonces es De acuerdo.

El único error en la conversión de ciclos de reloj de nuevo a tiempo es el posible error en la frecuencia de oscilación del reloj del sistema. Nuevamente, esto será despreciable para las funciones que demoran mucho tiempo en ejecutarse.

Parece que, en su caso, desea algo alrededor de 30Hz (30 FPS), que es un ciclo de tiempo comparado con el reloj del procesador muy largo.

    
respondido por el SomeEE
1

Si se trata de una función pequeña, puede simplemente mirar el desmontaje y contar las instrucciones.

    
respondido por el Will
1

¿Necesita usar esa información en su software también, o solo la necesita para propósitos de depuración / desarrollo? Si es el segundo (supongo que lo es, como su objetivo principal es perfilar), simplemente alternar una salida al principio y al final de la función, y medir el tiempo con un osciloscopio podría ser la medida más rápida, fácil y precisa. .

    
respondido por el vsz

Lea otras preguntas en las etiquetas