Статистика использования кучи IAR DLIB Печать
Добавил(а) microsin   

Куча (heap) описана в руководстве "IAR C/C++ Development Guide for ARM" [4], глава "Dynamic memory on the heap". Этот документ (Technical Note 28545 [1]) описывает, как собрать статистику по использованию кучи в приложении. Т. е. как отследить объем памяти, используемый malloc/new и подобными функциями, обслуживающими динамическую память.

В среде разработки IAR Embedded Workbench for ARM версии 6.60 и более свежей Вы можете собрать статистику использования кучи с помощью вызова функции __iar_dlmallinfo(). Если Вы хотите просто вывести эту статистику в stderr, то вызовите функцию __iar_dlmalloc_stats(). Пример вывода __iar_dlmalloc_stats():

max system bytes =     2048
system bytes     =     2048
in use bytes     =       16

Функции __iar_dlmallinfo и __iar_dlmalloc_stats декларированы и определены в файлах arm\src\lib\dlib\heap\dlmalloc.c и arm\src\lib\dlib\heap\dlmalloc_stat.c. Для IAR Embedded Workbench for ARM версий до 8.10 эти файлы можно найти в папке arm\src\lib. 

Чтобы вызвать эти функции, используйте заголовочный файл mallocstats.h, который можно загрузить по ссылке [2]. В загруженном zip-архиве также находится код примера main_test.c, показывающий, как использовать вызовы функции. 

В статье [3] описывается, как определить оптимальный размер для кучи с помощью функций bymalloc_max_footprint, malloc_max_footprint и mallinfo

[Устаревшие версии IAR]

Для IAR Embedded Workbench for ARM, у которых версии до 6.60, Вы должны подключить к проекту модуль arm\src\lib\dlmalloc.c, и установить определения NO_MALLINFO и NO_MALLOC_STATS в значение 0. Имейте в виду, что Вы должны сделать копию файла dlmalloc.c в каталог проекта, и затем подключать и модифицировать эту копию. Также имейте в виду, что в проекте C++ файл dlmalloc.c должен компилироваться как файл языка C.

Примечание: в версии IAR 4.41 файл dlmalloc.c отсутствует.

[Ссылки]

1. IAR DLIB Library heap usage statistics site:iar.com.
2. mallocstats_test.zip.
3. Проектирование стека и кучи в IAR.
4. IAR C/C++ Development Guide for ARM site:iar.com.