Записная книжка разработчика

Мои проекты

Распределение памяти в IAR

| Comments

Для того, чтобы выяснить, как распределена память (и ОЗУ, и ПЗУ) в проекте под IAR, достаточно найти файл с расширением .map. Он содержит подробнейшую информацию о том, какое количество памяти занимает каждый отдельный модуль и каждая отдельная функция программы.

Пример:

xdtento.o             452       72
 xfdnorm.o             130
 xfdscale.o            192
 xfexp.o               352
 xgetmemchunk.o         40                 4
 xprintffull.o       3 266        8
 xpurevirtual.o          6
 xreportassert.o       116       48
 xsprout.o              10
 xstod.o               188       16
 xstoflt.o             432       32
 xstopfx.o             246
 xstoul.o              280       80
 xsyslock.o            136                20
 xxmemxfree.o          136
 xxmemxmalloc.o        188                 8

Здесь в первом столбце указаны имена функций, во втором размер кода, размещённого в ПЗУ, в третьем столбце указан размер данных, размещённых в ПЗУ (констант), в последнем столбце указан размер данных, размещённых в ОЗУ (переменных). Из этого фрагмента мы можем узнать, например, что модуль xprintffull (вероятно, содержащий реализации функций printf, sprintf и т.п.) занимает довольно существенный размер, больше 3 Кб.

Вообще изучение данного файла может быть весьма познавательным. Если же ваша программа содержит много массивов данных, размещаемых в ПЗУ, то по этой таблице можно ещё раз убедиться в том, что ни один из них не попал случайно в ОЗУ (если перед объявлением массива пропущен модификатор const).