[an error occurred while processing this directive] [an error occurred while processing this directive]
IAR C V1.4 for AVR --- возможно ли такое ?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Igor Lapshin 22 августа 2001 г. 19:00

В конце проекта на AT90S8515 стало не хватать памяти программ.
Уровень оптимизации в компиляторе был уже 9.
Решил заняться неблагодарным делом --- оптимизировать программу в соответствии с рекомендациями IAR из "AVR035: Efficient C Coding for
AVR". Выкроил примерно 260 байт FLASH. Скажу лишь, что на практике
некоторые их рекомендации работали в сторону увеличения размера
( например объявление глобальных переменных, как структур),
либо давали мизерный эффект. Это конечно же зависит ещё и от программы.

Но не в этом дело. Прикинул, что 260 байт должно мне на пару недостающих функций хватить. Но компилятор "кинул" меня. Дело вот в чём добавил я к проекту два новых файла. Функции из этих файлов я пока ещё не использую. Скомпилировал программу --- практически всё сэкономленное место исчезло. Замечу, что размер FLASH смотрю в .map файле. Ведь линкер не должен включать в исполняемый файл тела неиспользующихся функций! Но здесь ситуация прямо противоположная. Это что же получается, скажем драйвер (.с файл) для работы с какой-то микросхемой написан универсально и содержит 10 функций. В проекте используются только три, а линкер включает все 10 ?

Разъясните пожалуйста ситуацию.

С Уважением, Игорь Лапшин.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru