Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Грабли с C IAR AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
sergeyip
Здравствуйте. Решил я тут написать проверочную программу для индикатора GT24064
на C IAR AVT. Из дата шита перевел ее в С, оттранслировал. И при компановке получил
такое сообщение.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,
Error[e16]: Segment RSTACK (size: 0x10 align: 0) is too
long for segment definition. At least 0xc more bytes
needed. The problem occurred while processing the
segment placement command
"-Z(DATA)RSTACK+_..X_RSTACK_SIZE=60-FF", where
at the moment of placement the available memory
ranges were "DATA:fc-ff"
Reserved ranges relevant to this placement:
DATA:60-b8 TINY_I
DATA:b9-bb TINY_Z
DATA:bc-fb CSTACK
DATA:fc-ff RSTACK
Total number of errors: 1
Total number of warnings: 0
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Может кто знает как с этим бороться. Как увеличить область стека принудительно.
Модель у меня в опциях стоит TINY и других возможных моделей там нет.
Что-то в последнее время форум тормозит так, что просто невозможно дождаться каких либо действий от него.
Rst7
Что за камень то?

На самом деле просто все заказанные области данных не лезут в озу (а не именно стек, просто на стеке линкер понял, что не помещается).

Вариантов борьбы несколько:

1. Уменьшить размеры стеков (в опциях проекта)
2. Уменьшить количество и размеры глобальных переменных (чтобы уменьшились сегменты TINY_I и TINY_Z)
SergeyBorshch
Или же поставить контроллер с большим ОЗУ smile.gif .
sergeyip
Цитата(Rst7 @ Sep 5 2008, 15:08) *
Что за камень то?

Камень Atmega8. Там задача то на 2-х листиках, пустяковая, а транлятор сдох.
На ассемблере я бы точно влез. Но решил выпендриться smile.gif
Спасибо за ответ, что то подобное я и предполагал.
Способ решения я понял. Приступаю к вырезанию всего лишнего, что только возможно.
Изменение кристалла или добовление ОЗУ дополнительного, это большой гимор, это надо опять в железе капаться - не интересное решение.
Есть еще решение - все константы индикаторные, а их много просто перенести во флэш данных.
Rst7
Нет, секундочку! У меги8 - килобайт озу. Должна быть там модель памяти small. А камень у Вас в настройках правильный выбран?
MrYuran
А кристалл в настройках правильно выбран?
А то может какой-нибудь Generic стоит...

(упс, телепатия однако...)
Сергей Борщ
Цитата(sergeyip @ Sep 5 2008, 14:24) *
Камень Atmega8.
Что-то странное вы говорите. Позволяет он для меги8 ставить модель памяти small. А так вы дали компилятору 0x100-0x60 = 160 байт памяти. На асме в 160 байт памяти уложились бы?
sergeyip
Цитата(Сергей Борщ @ Sep 5 2008, 15:32) *
Что-то странное вы говорите. Позволяет он для меги8 ставить модель памяти small.

Выкладываю фото элемента настройки модели. Файл мой->Борщю. smile.gif Там ясно видно, что при открытии
модели - появляется только шильдик Tiny.
Об среде:

IAR C/C++ Compiler for AVR
4.30A/W32 [Evaluation] (4.30.1.3)
C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\bin\iccavr.exe
10.02.2008 15:03:02, 9654272 bytes

C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\bin\postlink.exe
14.11.2005 11:00:12, 44544 bytes

C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\drivers\jtagIceMkII\wdreg.exe
22.06.2005 11:43:30, 131157 bytes


IAR Embedded Workbench IDE
4.8 (4.8.0.0)
C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\common\bin\IarIdePm.exe
21.05.2007 20:14:44, 315392 bytes
TookeR
Все просто у вас не выбран кристал ....
в строке Processor configuration выбирите --cpu=m8 , ATmega8
там и будет уже модель памяти small и tiny
MrYuran
Нажмите для просмотра прикрепленного файла
Вот как надо

А скриншоты надо грабить с ALT-ом, тогда только текущее окно захватывается.
И сохранять в .png, красивее и легковеснее
sergeyip
Цитата(MrYuran @ Sep 5 2008, 16:13) *
Вот как надо
Ну мужики - Вы гиганты. Большое спасибо. Сразу все прошло. beer.gif
Сергей Борщ
Цитата(sergeyip @ Sep 5 2008, 15:23) *
Большое спасибо. Сразу все прошло. beer.gif
Ну вот. я же говорил
Цитата
Позволяет он для меги8
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.