2012-01-02 17 views
6

Me pregunto cómo se perfila el software en sistemas de metal desnudo (ARM Cortex a8)? Anteriormente estaba usando un simulador que tenía estadísticas integradas de referencia, y ahora quiero comparar los resultados del hardware real (ejecutándose en un BeagleBoard-Xm).Creación de perfiles en sistemas embebidos baremetal (ARM)

Entiendo que puedes usar gprof, pero estoy perdido porque supongo que tienes que ejecutar Linux en el sistema de destino.

Creo el archivo ejecutable con el compilador cruzado arm-none-eabi de Codesourcery y el sistema de destino ejecuta FreeRTOS.

Respuesta

3

Evalúe de cerca lo que quiere decir con "perfilado". De hecho, estás operando muy cerca del metal desnudo, y es probable que te pidan que realices parte del trabajo realizado por una herramienta como gprof.

¿Desea sincronizar una llamada de función? o un ISR? ¿Qué hay de alternar una línea GPIO al entrar y salir del código bajo inspección? Se puede configurar un registrador de datos u osciloscopio para que se active en estos eventos. (En mi experiencia, un registrador de datos es más conveniente ya que el mío se puede configurar para capturar una secuencia de estos eventos, lo que me permite calcular los tiempos promedio.)

¿Desea contar el número de ejecuciones? El Cortex A8 viene equipado con una serie de características (como contadores de eventos configurables) que pueden ayudar: link. Su chip ARM puede estar equipado con otros periféricos que podrían ser utilizados, también (dependiendo del proveedor). De todos modos, eche un vistazo al enlace de arriba: ¡los nuevos ARM tienen muchas características geniales con las que no puedo jugar tanto como me gustaría! ;-)

+0

Estaba pensando si era posible usar cualquier herramienta de generación de perfiles como gprof para reunir información sobre varios datos como ciclos de reloj, gráficos de llamadas, tiempo empleado en cada función, cantidad de llamadas. Sin embargo, me alegro si puedo obtener cuántos ciclos de reloj se requieren para ejecutar la aplicación de principio a fin. El enlace que me diste fue bueno, lo investigaré, ¡Thx! – MrGigu

+0

Hola, tengo el contador del ciclo del reloj funcionando, sin embargo, me pregunto si es posible programar una función con la PMU (unidad de monitor de rendimiento). También tengo un depurador Flyswatter 2, ¿quizás se puede usar para algo? ¿Debo comprar un registrador de datos o un osciloscopio para hardware de tiempo? Nunca he usado ninguno de esos, ¡y son bastante caros! – MrGigu

+0

Aquí hay un analizador lógico a un precio razonable. Funcionó lo suficientemente bien para mí: http://www.nci-usa.com/frame_products_overview.htm. Algunas de las estadísticas de PMU se pueden exportar al ETM, desde allí es posible acceder a ellas usando la interfaz JTAG de Flyswatter. (Solo estoy adivinando). – Throwback1986

2

He logrado obtener perfiles trabajando para ARM Cortex M. Como las herramientas GNU ARM Embedded (launchpad) no vienen con bibliotecas de perfiles incluidas, he agregado la funcionalidad necesaria de encolado y perfilado. Referencias: Ver http://mcuoneclipse.com/2015/08/23/tutorial-using-gnu-profiling-gprof-with-arm-cortex-m/

Espero que esto ayude.

+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/8259#8259 –

+0

Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación. – Bruce

Cuestiones relacionadas