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

 
 
 
Reply to this topicStart new topic
> задачка с IAR, нехватка памяти
Мах
сообщение Mar 28 2006, 13:50
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 13-01-06
Пользователь №: 13 122



Народ помогите! help.gif Программирую на IAR контроллер ATmega16. Доволен всем только при достижение выходного хеш файла 11,4кб компилятр говорит мол все! Нет больше памяти blink.gif а мне эти (до 16кб) 4кб ой как надо). Убираю пару команд, все компилируеся, любая попытка добавить что нибудь карается glare.gif .
ЧТО ДЕЛАТЬ? КАК можно настроить компилятр на 99% использование памяти контроллера cranky.gif
Буду благодарен за совет rolleyes.gif
Go to the top of the page
 
+Quote Post
BVU
сообщение Mar 28 2006, 14:09
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Попробуйте следующее:
1. Включить в настройках проекта максимадьную оптимизацию кода.
2. Исключите библиотеки, которые не используются. Либо попробуйте написать свои функции исключив вызовы библиотечных функций входящих в комплект IAR.
3. Минимизировать код наиболее оптимальным стиленаписанием (применение циклов и рекурсий). Создание подпрограм заменяющие обращение к которым заменяет однотипные участки кода.
4. По возможности работать с переменными меньшей длинны, если они не выходят за пределы своего типа. Так же в качестве флагов использовать битовые переменные.
5. Переписать если возможно часть кода на asm.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
_artem_
сообщение Mar 28 2006, 15:07
Сообщение #3


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



а какой памяти не хватает ? Стек сколько у вас ? Скомпилируйте на другой процессор (мега32 например) а затем проверьте выход линкера по обьему испольсуемой памяти . может чтото упустили ?


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 28 2006, 17:59
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Мах @ 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 оболочки будет наиболее полная инфа о всех этапах компиляции. В конце же будет инфа обо всех видах используемой памяти МК.

Сообщение отредактировал prottoss - Mar 28 2006, 18:04


--------------------
Go to the top of the page
 
+Quote Post
BVU
сообщение Mar 29 2006, 06:05
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Мах @ Mar 28 2006, 17:50) *
...
Убираю пару команд, все компилируеся, любая попытка добавить что нибудь карается
...

Да и так уже видно, что нехватка именно памяти программного кода!


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 29 2006, 07:28
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



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

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

Еще может быть в XCL файле что то не так
Go to the top of the page
 
+Quote Post
BVU
сообщение Mar 29 2006, 08:25
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



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

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

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

Поддерживаю! Это необходимо контролировать в первую очередь, что бы ориентироваться на оставшиеся ресурсы памяти проекта.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Мах
сообщение Mar 29 2006, 11:50
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 13-01-06
Пользователь №: 13 122



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
Go to the top of the page
 
+Quote Post
zhek
сообщение Mar 29 2006, 12:15
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 29-12-05
Из: Екатеринбург
Пользователь №: 12 692



Похоже, таки 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"
и еще что-то
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 29 2006, 22:48
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата
Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package


Ограничение по размеру компилируемого кода - 4kb.
Go to the top of the page
 
+Quote Post
BVU
сообщение Mar 30 2006, 07:41
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Мах @ 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


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 2 2006, 09:17
Сообщение #12


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Evaluation Version имеет ограничения по сроку действия, которое легко снимается лечением, а ограничения по объёму даёт Kick Start версия, которая и есть у автора темы и лечение которой ничего не даст.
Я, например, даже не знаю таких лекарств.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Apr 3 2006, 05:37
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



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

А что такое Kick Start версия?
Go to the top of the page
 
+Quote Post
BVU
сообщение Apr 3 2006, 05:39
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



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

Значит надо установить Evaluation Version версию как наверно мы все делаем:
1. Зарегистрироваться на сайте IAR и скачать Evaluation Version версию, получить письмо кода активизации от того же IAR. Если попадете в свои можно воспользоваться скачкой с ftp форума.
2. Лекарство взять на форуме по ссылке или прикрепленные найдя тематические посты.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 9th July 2025 - 05:46
Рейтинг@Mail.ru


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