Перейти к содержанию
    

IAR и .map файл. Проект на С++

Всем привет.

Решил сделать проект на С++, заюзал виртуальные функции. Все было хорошо, пока не стал вопрос оптимизации ОЗУ. Сгенерил .map файл в котором мне непонятна строка где линковщик отъедает 1.5к оперативы.

Ниже вырезка с файла:

 

***********************************************************************
********
*** MODULE SUMMARY
***

Module			   ro code  ro data  rw data
------			   -------  -------  -------
D:\prj\git\fuel_sensor_fw\app\prj\flash\Obj: [1]
ev_bus.o				 112
fs_filter.o			  104
hal.o					676
hal_adc.o				 46				 4
hal_dac.o				 76
hal_flash.o			  236				 3
hal_gpio.o			   130	   40	   40
hal_i2c.o				286
hal_sys.o				494				 4
hal_tmr.o				538				 4
hal_uart.o			   364				 8
iface.o				  276	   20
lis331.o				  64
main.o				 1 048	   24	3 056
measure.o				470
misc.o				   204
output.o				  88
proto_master.o			10
proto_slave.o		  1 828
queue_08.o			   214
settings.o			 2 700
soft_timer.o			 324	   20		5
startup_stm32f0xx.o	  258
stm32f0xx_dac.o		   92
stm32f0xx_flash.o		324
stm32f0xx_gpio.o		 158
stm32f0xx_i2c.o		  250
stm32f0xx_misc.o		  92
stm32f0xx_rcc.o		  400	   16	   16
stm32f0xx_syscfg.o		20
stm32f0xx_tim.o		  476
stm32f0xx_usart.o		280
wake.o				   698
----------------------------------------------
Total:				13 336	  120	3 140

command line: [2]
----------------------------------------------
Total:

dl6M_tln.a: [3]
cppinit.o				168				20
exit.o					 8
strcat.o				  28
----------------------------------------------
Total:				   204				20

dlpp6M_tl_ne.a: [4]
cxxabi.o				  48
----------------------------------------------
Total:					48

m6M_tl.a: [5]
FltAddSub.o			  278
FltDiv.o				 170
FltMul.o				 180
FltToS32.o				58
FltToU32.o				38
I32ToFlt.o				30
----------------------------------------------
Total:				   754

rt6M_tl.a: [6]
ABImemcpy.o			   92
ABImemset.o			   84
I32DivMod.o			   86
cexit.o				   14
cmain.o				   22
cmain_call_ctors.o		32
copy_init3.o			  48
cstart_call_dtors.o
cstartup_M.o			  12
data_init.o			   40
strcpy.o				  16
strlen.o				  16
uread4.o				  22
uwrite4.o				 20
zero_init3.o			  42
----------------------------------------------
Total:				   546

shb_l.a: [7]
exit.o					20
----------------------------------------------
Total:					20

Linker created					 40	1 420
--------------------------------------------------
Grand Total:		  14 908	  160	4 580

 

Получается что 3140 байт я использовал, а 1420 байт кудато задействовал линковщик. Собственно подозреваю что эта память ушла на теневые вещи связанные с С++: виртуальные таблицы и тд. Но таблица на одну виртуальную ф-ю занимает всего порядка 20 байт.

Есть мысли?

Изменено пользователем IgorKossak
[codebox] для длинного кода, [code] - для короткого!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем в Си проекте линковщик тоже отъедает ОЗУ, раньше не замечал т.к. ее было предостаточно :)

Кто нибуть знает как уменьшить прожорливость линковщика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, разобрался.

Я в стандартном ICF файле забыл стеки и кучу уменьшить. Вот оно и было:

define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__   = 0x200;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...