Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: задачка с IAR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Мах
Народ помогите! help.gif Программирую на IAR контроллер ATmega16. Доволен всем только при достижение выходного хеш файла 11,4кб компилятр говорит мол все! Нет больше памяти blink.gif а мне эти (до 16кб) 4кб ой как надо). Убираю пару команд, все компилируеся, любая попытка добавить что нибудь карается glare.gif .
ЧТО ДЕЛАТЬ? КАК можно настроить компилятр на 99% использование памяти контроллера cranky.gif
Буду благодарен за совет rolleyes.gif
BVU
Попробуйте следующее:
1. Включить в настройках проекта максимадьную оптимизацию кода.
2. Исключите библиотеки, которые не используются. Либо попробуйте написать свои функции исключив вызовы библиотечных функций входящих в комплект IAR.
3. Минимизировать код наиболее оптимальным стиленаписанием (применение циклов и рекурсий). Создание подпрограм заменяющие обращение к которым заменяет однотипные участки кода.
4. По возможности работать с переменными меньшей длинны, если они не выходят за пределы своего типа. Так же в качестве флагов использовать битовые переменные.
5. Переписать если возможно часть кода на asm.
_artem_
а какой памяти не хватает ? Стек сколько у вас ? Скомпилируйте на другой процессор (мега32 например) а затем проверьте выход линкера по обьему испольсуемой памяти . может чтото упустили ?
prottoss
Цитата(Мах @ Mar 28 2006, 20:50) *
Народ помогите! help.gif Программирую на IAR контроллер ATmega16. Доволен всем только при достижение выходного хеш файла 11,4кб компилятр говорит мол все! Нет больше памяти blink.gif а мне эти (до 16кб) 4кб ой как надо). Убираю пару команд, все компилируеся, любая попытка добавить что нибудь карается glare.gif .
ЧТО ДЕЛАТЬ? КАК можно настроить компилятр на 99% использование памяти контроллера cranky.gif
Буду благодарен за совет rolleyes.gif


Вопрос немного не понятный. То ли у вас ограниченная версия компилятора, то ли памяти программ просто не хватает. Судя по размеру выходного HEX-файла у вас размер кода 8кБ, или 4Кслов. Я не помню сколько ограничение у "нелеченной" версии IAR. Ну примерно так и есть. Хотя может быть я ошибаюсь. Напишите хоть версию компилятора и дословное сообщение об ошибке компилятором. Типа "Error[PeXXXXXX]: ...бла-бла-бла". Тогда люди Вам дадут конструктивные советы

Чтобы получить наиболее полную инфу от линкера и компилятора зайдите в меню Tools->Options. В портянке Messages установите Show Build Messages = All. После компиляции в окне Messages оболочки будет наиболее полная инфа о всех этапах компиляции. В конце же будет инфа обо всех видах используемой памяти МК.
BVU
Цитата(Мах @ Mar 28 2006, 17:50) *
...
Убираю пару команд, все компилируеся, любая попытка добавить что нибудь карается
...

Да и так уже видно, что нехватка именно памяти программного кода!
KRS
Вам надо указать линкеру что бы листинг создал
и посмотреть map файл, там будет все распределение памяти.

А 4 кб скорее всего не под код уходят а под константы (они тоже во флеше находятся)

Еще может быть в XCL файле что то не так
BVU
Цитата(KRS @ Mar 29 2006, 11:28) *
Вам надо указать линкеру что бы листинг создал
и посмотреть map файл, там будет все распределение памяти.

А 4 кб скорее всего не под код уходят а под константы (они тоже во флеше находятся)

Еще может быть в XCL файле что то не так

Поддерживаю! Это необходимо контролировать в первую очередь, что бы ориентироваться на оставшиеся ресурсы памяти проекта.
Мах
IAR Universal Linker V4.59R/386
Copyright 1987-2005 IAR Systems. All rights reserved.

Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package
Fatal! Execution terminated...

Вот так он на меня ругается angry.gif
zhek
Похоже, таки IAR невылечен. Хороший здесь был совет скомпилировать под Mega32. Все неясности должны отпасть. Когда не хватает памяти, он ругается так (проект под Mega8):
Error[e16]: Segment CODE (size: 0x2a00 align: 0x1) is too long for segment definition. At least 0xa32 more bytes needed.
The problem occurred while processing the segment placement command
"-Z(CODE)CODE=_..X_FLASH_BASE-_..X_FLASH_END", where at the moment of placement the available memory
ranges were "CODE:32-1fff"
и еще что-то
defunct
Цитата
Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package


Ограничение по размеру компилируемого кода - 4kb.
BVU
Цитата(Мах @ Mar 29 2006, 15:50) *
IAR Universal Linker V4.59R/386
Copyright 1987-2005 IAR Systems. All rights reserved.

Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package
Fatal! Execution terminated...

Вот так он на меня ругается angry.gif

Ну теперь все понятно... c этой Evaluation Version, что у Вас установлена - не сняты ограничения до полнофункциональной работы. Надо лечить! Поищите на форуме средство, об этом много было тем, так что найдете быстро. smile.gif
IgorKossak
Evaluation Version имеет ограничения по сроку действия, которое легко снимается лечением, а ограничения по объёму даёт Kick Start версия, которая и есть у автора темы и лечение которой ничего не даст.
Я, например, даже не знаю таких лекарств.
Igor26
Цитата(IgorKossak @ Apr 2 2006, 13:17) *
Evaluation Version имеет ограничения по сроку действия, которое легко снимается лечением, а ограничения по объёму даёт Kick Start версия, которая и есть у автора темы и лечение которой ничего не даст.
Я, например, даже не знаю таких лекарств.

А что такое Kick Start версия?
BVU
Цитата(IgorKossak @ Apr 2 2006, 13:17) *
Evaluation Version имеет ограничения по сроку действия, которое легко снимается лечением, а ограничения по объёму даёт Kick Start версия, которая и есть у автора темы и лечение которой ничего не даст.
Я, например, даже не знаю таких лекарств.

Значит надо установить Evaluation Version версию как наверно мы все делаем:
1. Зарегистрироваться на сайте IAR и скачать Evaluation Version версию, получить письмо кода активизации от того же IAR. Если попадете в свои можно воспользоваться скачкой с ftp форума.
2. Лекарство взять на форуме по ссылке или прикрепленные найдя тематические посты.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.