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

 
 
> Грабли с C IAR AVR, При компановке сообщает, что мал стек
sergeyip
сообщение Sep 5 2008, 11:05
Сообщение #1


Местный
***

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



Здравствуйте. Решил я тут написать проверочную программу для индикатора 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 и других возможных моделей там нет.
Что-то в последнее время форум тормозит так, что просто невозможно дождаться каких либо действий от него.

Сообщение отредактировал sergeyip - Sep 5 2008, 11:08
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Sep 5 2008, 11:08
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Что за камень то?

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

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

1. Уменьшить размеры стеков (в опциях проекта)
2. Уменьшить количество и размеры глобальных переменных (чтобы уменьшились сегменты TINY_I и TINY_Z)


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
sergeyip
сообщение Sep 5 2008, 11:24
Сообщение #3


Местный
***

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



Цитата(Rst7 @ Sep 5 2008, 15:08) *
Что за камень то?

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

Сообщение отредактировал sergeyip - Sep 5 2008, 11:37
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 5 2008, 11:32
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


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


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