Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR и .map файл. Проект на С++
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
JeDay
Всем привет.
Решил сделать проект на С++, заюзал виртуальные функции. Все было хорошо, пока не стал вопрос оптимизации ОЗУ. Сгенерил .map файл в котором мне непонятна строка где линковщик отъедает 1.5к оперативы.
Ниже вырезка с файла:

CODE
***********************************************************************
********
*** 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 байт.
Есть мысли?
JeDay
В общем в Си проекте линковщик тоже отъедает ОЗУ, раньше не замечал т.к. ее было предостаточно sm.gif
Кто нибуть знает как уменьшить прожорливость линковщика?
MALLOY2
Linker created - Это в основном место под кучу и стеки.
JeDay
Спасибо, разобрался.
Я в стандартном ICF файле забыл стеки и кучу уменьшить. Вот оно и было:
Код
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__   = 0x200;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.