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

 
 
 
Reply to this topicStart new topic
> Определение размера стека, Как определить размер стека?
Sergio66
сообщение Mar 13 2006, 16:24
Сообщение #1


Местный
***

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



Подскажите, пожалуйста, как в IAR определить размер стека, необходимый для программы. Я имею ввиду то, что нужно указать в опциях проекта.
Go to the top of the page
 
+Quote Post
BVU
сообщение Mar 13 2006, 16:30
Сообщение #2


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

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



Цитата(Sergio66 @ Mar 13 2006, 19:24) *
Подскажите, пожалуйста, как в IAR определить размер стека, необходимый для программы. Я имею ввиду то, что нужно указать в опциях проекта.

Самый надежный способ посмотреть asm листинг - какой изначально адрес загружается в регистры стека и соотнести с областью внутреннего ОЗУ микроконтроллера вверх, до места где начинаются РОН.
Так же в *.map файле есть информация:
Код
.....
CSTACK               DATA          00000060 - 000000DF          80   dse    0
RSTACK               DATA          000000E0 - 000000FF          20   dse    0
NEAR_I               DATA          00000100 - 0000023B         13C   rel    0
NEAR_Z               DATA          0000023C - 0000027C          41   rel    0
EEPROM_I             XDATA         00000001 - 00000041          41   rel    0
.....


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


Местный
***

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



Дело в том, что в map файле указываетс именно то, что я прописываю в опциях проекта. Важно понять, что именно прописывать в опциях. мар - это производная информация. Мне же нужно определить первичную. Я так понимаю, что в asm листинге мы также увидим то, что я указал в опциях.
Go to the top of the page
 
+Quote Post
BVU
сообщение Mar 13 2006, 16:52
Сообщение #4


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

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



Цитата(Sergio66 @ Mar 13 2006, 19:38) *
Дело в том, что в map файле указываетс именно то, что я прописываю в опциях проекта. Важно понять, что именно прописывать в опциях. мар - это производная информация. Мне же нужно определить первичную. Я так понимаю, что в asm листинге мы также увидим то, что я указал в опциях.

Project->Options...->General options->System:
там имеется раздел Data stack, где для Size(bytes): должно указываться в шестнадцатеричном виде необходимое число байт для проекта. А уж сколько вы памяти для этого (Stack) отведете зависит от задачи и Ваших хотябы в первом приближении примерных расчетов... По окончанию проекта эту цифру можно определить более точно!


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


Местный
***

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



Вот именно это я и хочу знать! Как определить более точно? Я знаю, IAR в map файле строит дерево вызовов. Вот можно ли с его помошью, и, если да, то как, определить точно размер стеков?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 13 2006, 19:04
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Sergio66 @ Mar 13 2006, 19:00) *
Вот именно это я и хочу знать! Как определить более точно? Я знаю, IAR в map файле строит дерево вызовов. Вот можно ли с его помошью, и, если да, то как, определить точно размер стеков?

Померить реальные. Для этого заполнить стек каким-либо значением типа 0xDEADBEEF и после напряженной работы оценить "неиспорченный" обьем пробежавшись от донышка стека до
первого значения отличаещегося от запонителя.

Сообщение отредактировал zltigo - Mar 13 2006, 19:05


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
bialix
сообщение Mar 19 2006, 16:57
Сообщение #7


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

Группа: Свой
Сообщений: 174
Регистрация: 4-11-04
Из: zp.ua
Пользователь №: 1 046



Посчитать и оценить можно. Только вот сам IAR вам в этом деле никак не поможет.
Ознакомтесь с этими материалами:

http://www.embedded.com/showArticle.jhtml?articleID=47101892
http://www.cs.utah.edu/~regehr/stacktool/

Там даже есть пример проги-считалки стека для AVR. Правда на перле. (suks!)


--------------------
Имей мужество пользоваться своим собственным разумом! (с) И.Кант
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 19 2006, 17:40
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(bialix @ Mar 19 2006, 18:57) *
Только вот сам IAR вам в этом деле никак не поможет.

Ну не так категорично. В *.map файле для всех функций размеры стеков выдаются.
Дерево вызовов абсолютно от фонаря строится и нарастающим итогом. Но при желании
именно посчитать, самая начальная (причем на самом деле максимально сложно
добываемая окольными путями) о каждой из функций предоставляется именно IARом.
Для некоторых несложных, но критичных веток можно и посчитать и на перле автоматизировать
процесс. Правда без четкого знания мест использования неявных библиотечных вызовов это
сделать уже сложно :-(


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
bialix
сообщение Mar 20 2006, 09:58
Сообщение #9


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

Группа: Свой
Сообщений: 174
Регистрация: 4-11-04
Из: zp.ua
Пользователь №: 1 046



Цитата(zltigo @ Mar 19 2006, 19:40) *
Цитата(bialix @ Mar 19 2006, 18:57) *

Только вот сам IAR вам в этом деле никак не поможет.

Ну не так категорично. В *.map файле для всех функций размеры стеков выдаются.
Дерево вызовов абсолютно от фонаря строится и нарастающим итогом. Но при желании
именно посчитать, самая начальная (причем на самом деле максимально сложно
добываемая окольными путями) о каждой из функций предоставляется именно IARом.
Для некоторых несложных, но критичных веток можно и посчитать и на перле автоматизировать
процесс. Правда без четкого знания мест использования неявных библиотечных вызовов это
сделать уже сложно :-(


Почитайте статью по первой моей ссылке.


--------------------
Имей мужество пользоваться своим собственным разумом! (с) И.Кант
Go to the top of the page
 
+Quote Post

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

 


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


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