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

 
 
> RL-ARM, стек для задач, Пиковые значения размера использования
toweroff
сообщение Apr 10 2012, 14:32
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый день!

Озадачился тут оптимизацией памяти. Ну во-первых, уменьшил количество одновременно запущенных задач до реального значения
Во-вторых, хочу оптимизировать размер стека

После компиляции я могу посмотреть в отчетах, например, что-то вроде такого:
Код
Maximum Stack Usage = 328 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)
Call chain for Maximum Stack Depth:
monitor ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int


отлично. Закладываю 400 байт... и вылетаю в Stack Overflow

Запускаю симулятор. Все там прекрасно бегает, разумеется, как только использование printf - так сразу стек "подскакивает"
Но смотреть пошагово - неудобно, да и не всегда отобразится полная картина.
Можно ли как-то промориторить пиковые значения мспользования стека каждой задачей?
В Debug->OS Support я не нашел. Возможно, еще где-то есть такая возможность?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Apr 10 2012, 16:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



0xFF - это, мягко говоря, не самый удачный вариант. Заполните каким-нибудь паттерном подлиннее и посложнее (0xdeadbeef, например).
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 10 2012, 16:28
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(aaarrr @ Apr 10 2012, 20:13) *
0xFF - это, мягко говоря, не самый удачный вариант. Заполните каким-нибудь паттерном подлиннее и посложнее (0xdeadbeef, например).

попробовал... картина та же
кстати, стек инициализируется 0x00, так что паттерн особой роли не играет - обращения все равно в диапазон 0x0xxxxxxx (flash) или 0x4xxxxxxx (RAM), 0xFFFFFFFF видно все равно
ну не суть
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 10 2012, 16:37
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(toweroff @ Apr 10 2012, 20:28) *
попробовал... картина та же

Тогда увеличивайте стек, чтобы наверняка ухватить конец. Очень может быть, что его уже не хватает,
просто это пока не проявляется. "Дырки" вполне могут возникать при работе *scanf.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 13:15
Рейтинг@Mail.ru


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