|
|
  |
Определение размера стека, Как определить размер стека? |
|
|
|
Mar 13 2006, 16:30
|

Профессионал
    
Группа: Свой
Сообщений: 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 .....
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
Mar 13 2006, 16:52
|

Профессионал
    
Группа: Свой
Сообщений: 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) отведете зависит от задачи и Ваших хотябы в первом приближении примерных расчетов... По окончанию проекта эту цифру можно определить более точно!
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
Mar 13 2006, 19:04
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Mar 19 2006, 17:40
|

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

|
Цитата(bialix @ Mar 19 2006, 18:57)  Только вот сам IAR вам в этом деле никак не поможет. Ну не так категорично. В *.map файле для всех функций размеры стеков выдаются. Дерево вызовов абсолютно от фонаря строится и нарастающим итогом. Но при желании именно посчитать, самая начальная (причем на самом деле максимально сложно добываемая окольными путями) о каждой из функций предоставляется именно IARом. Для некоторых несложных, но критичных веток можно и посчитать и на перле автоматизировать процесс. Правда без четкого знания мест использования неявных библиотечных вызовов это сделать уже сложно :-(
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 20 2006, 09:58
|

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

|
Цитата(zltigo @ Mar 19 2006, 19:40)  Цитата(bialix @ Mar 19 2006, 18:57)  Только вот сам IAR вам в этом деле никак не поможет.
Ну не так категорично. В *.map файле для всех функций размеры стеков выдаются. Дерево вызовов абсолютно от фонаря строится и нарастающим итогом. Но при желании именно посчитать, самая начальная (причем на самом деле максимально сложно добываемая окольными путями) о каждой из функций предоставляется именно IARом. Для некоторых несложных, но критичных веток можно и посчитать и на перле автоматизировать процесс. Правда без четкого знания мест использования неявных библиотечных вызовов это сделать уже сложно :-( Почитайте статью по первой моей ссылке.
--------------------
Имей мужество пользоваться своим собственным разумом! (с) И.Кант
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|