реклама на сайте
подробности

 
 
> Разбухание кода в STM32
Porty
сообщение Apr 2 2012, 06:42
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



Добрый день.

Пишу для STM32F100xxx
Использую стандартный GCC, codesourcery gcc arm toolchain
И Эклипс в качестве среды.

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

было
CODE

char *rs_tx_command;
char rs_tx_command_crc=0;
void rs_tx_command_add(char v)
{
rs_tx_command[rs_tx_command_count++]=v;
rs_tx_command_crc+=v;
}


стало
CODE

char *rs_tx_command;
char rs_tx_command_crc=0;
void rs_tx_command_add(char v)
{
if (rs_tx_command_count == 2)
{
rs_tx_command[rs_tx_command_count++] = RS_COMMANDS_EXTENDER; //RS_COMMANDS_EXTENDER = 0xFF
rs_tx_command_crc += RS_COMMANDS_EXTENDER;
}
rs_tx_command[rs_tx_command_count++]=v;
rs_tx_command_crc+=v;
}


то размер кода увеличивается на 2 килобайта, хотя по асм-листингу добавляется 10-20 команд всего.
Хотя если вносить изменения в других местах проекта не связанных с кодом а данными добавляемыми в флешь (как константы), например поменять константу с 8 битной на 32 битную или 64 битную то увеличивается размер кода на 4 или 8 байт.

Настройки:
командная строка компилятора
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -O3 -fdata-sections -g

линковщика
arm-none-eabi-gcc -O3 -nostartfiles -Map=one_chanel.map -mcpu=cortex-m3 -mthumb -L${linkdir} -T${linkdir}\link.ld --gc-sections

Куда девается остальное?
И почему это происходит?

Спасибо.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01347 секунд с 7
ELECTRONIX ©2004-2016