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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Стек в IAR, IAR выдает ошибку
junoSynthesizer
сообщение Nov 28 2006, 17:34
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397



позволю себе поднять тему.

люди, подскажите... а то тоже возникли проблемы с нехваткой ОЗУ в АТмеге16. первый раз столкнулся с этим, необходима помощь в понимании.

вопрос первый:
под что идут CSTACK и RSTACK соответственно при работе программы?
насколько я понимаю, RSTACK - исключительно под адреса возврата из функций (может ещё под локальные переменные), а CSTACK под передаваемые в функции параметры?

я никак не могу понять, что куда и зачем мне в памяти размещает иар.

в карте линковщика написано
474 bytes of DATA memory (+ 21 absolute )
при 1 кб доступных. но стоит мне добавить 9-байтовый массив - всё, начинается фигня, как бы я ни крутил параметры стека.

TINY_I DATA 00000060 Predefined 0
TINY_Z DATA 00000060 - 000000C0 61 Relative 0
CSTACK DATA 000000C1 - 000000F5 35 Predefined 0
RSTACK DATA 000000F6 - 00000239 144 Predefined 0
помогите так же разобраться с этим. под что идёт куча?

у меня максимальная вложенность функций равна 5. но при размере RSTACK меньше 140 еначинаются зависания...
совсем запутался.
да, ещё: в программе не используется ничего больше uint. максимально объёмные передаваемые данные в функцию - в сумме не больше 4х байт.


--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 28 2006, 17:58
Сообщение #17


Шаман
******

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



junoSynthesizer, судя по листингу сегментов, Вы выбрали модель памяти tiny. Выберите small и будет Вам счастье.
Когда говорите о сообщениях компилятора\линкера, приводите текст сообщения.
Куча (если речь идёт о heap) выделяется только тогда, когда в программе есть команды, к ней обращающиеся.
Go to the top of the page
 
+Quote Post
junoSynthesizer
сообщение Nov 28 2006, 19:03
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397



к куче обращаются команды malloc и иже с ней? а если я их не использую? тогда мне вообще куча не нужна получается?

и таки-да, Вы правы, у меня стоит модель тини. попробую сделать смолл. спасибо за совет.


-----------------
спасибо, действительно всё дело было в модели памяти. совсем забыл что при тини пхается и стек и данные в одну область (по х86 асму так вроде)

ещё попросматривал листинги - и увидел, что стек данных так же необходим для сохранения регистров ОН.

Сообщение отредактировал junoSynthesizer - Nov 28 2006, 21:46


--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 30 2006, 13:43
Сообщение #19


Шаман
******

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



Цитата(junoSynthesizer @ Nov 28 2006, 18:03) *
к куче обращаются команды malloc и иже с ней? а если я их не использую? тогда мне вообще куча не нужна получается?

Не нужна, но и делать в этом случае ничего не нужно, т. к. сегмент HEAP создан не будет и память под него, разумеется, тоже.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:00
Рейтинг@Mail.ru


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