Cómo medir el uso de ROM y RAM de funciones individuales de una biblioteca que debe ejecutarse en un sistema integrado

Para la ROM es más fácil, depende principalmente del compilador / enlazador o IDE que esté utilizando. Por ejemplo, la cadena de herramientas de Microchip tiene una opción de compilador en la que puede ver toda la información en la ventana de salida directamente. Algunos otros tendrán un archivo de “mapa” en el que puede ver toda la dirección ROM e incluso puede verificar dónde comienza y termina un método determinado (por lo tanto, más pequeño que la biblioteca).

Para la RAM es un poco más difícil, y depende si está utilizando memoria estáticamente asignada o un montón. Si está utilizando el primero, creo que también puede ver la información en un archivo de mapa o un gráfico en el IDE. Si está utilizando este último, debe confiar en algunos instrumentos que el compilador le puede proporcionar. Por ejemplo, los compiladores de domo basados ​​en GNU tienen una función llamada “mallinfo” que le brinda información sobre “mallocs”. Si los llama justo antes y después de usar un método o biblioteca determinados, puede probar el sistema para detectar pérdidas de memoria.

Mi respuesta se basa principalmente en C. Para C ++, creo que hay otras herramientas, pero estas también deberían funcionar. Al final, esto depende en gran medida del compilador / enlazador porque depende de él dónde y cómo colocar las implementaciones de las cosas que está escribiendo.

Estoy de acuerdo con Fausto La forma en que los ingenieros integrados lo hacemos es examinar el archivo de mapa del vinculador después de una compilación. Un buen mapa de enlaces contendrá toda la información que necesita sobre el uso de la memoria estática. Para el uso de memoria dinámica, necesitará una herramienta de tiempo de ejecución, ya sea una que usted mismo escriba y ponga en su código o que use las funciones de su depurador.