[an error occurred while processing this directive] [an error occurred while processing this directive]
Мысли по поводу IAR C V1.40 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 28 августа 2001 г. 19:09

Проект делается на AVR AT90S8515. При его завершении стало катастрофически не хватать памяти программ. Решил заняться оптимизацией. Честно говоря неблагодарное это дело выкраивать по крохам с помощью оптимизации память программ. И главное --- это титанически рутинный процесс! Но так уж сложилось.
Далее поступил следующим образом: где можно перенёс все массивы flash char в EEPROM. Думал сэкономить ещё 500 байт FLASH. При этом пришлось заменить в проекте strcpy_P() нат свою strcpy_E(). Экономия оказалась значительно большей. Странно, ведь инструкция чтения FLASH LPM занимает всего 2 байта, а макросы _EEPUT() _EEGET() раскладываются на несколько команд, но факт на лицо. Что же IAR вписала в strcpy_P() ?

Далее, в проекте использую и printf() со спецификатором формата
_small_write. Попробовал закоментировать все строки с её вызовом ---
это ж надо свыше 800 байт освободилось.

В связи с этим просьба: может кто-то поделится эффективной реализацией
функции itoa(). Мне этого будет вполне достаточно.

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


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

Ответы



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

E-mail: info@telesys.ru