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

 
 
> Как определить размер стека для задачи в RTOS ?, в gcc
artymen
сообщение Nov 5 2010, 15:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 6-11-09
Из: г. Омск
Пользователь №: 53 464



Первый раз использую RTOS. Сейчас размеры стеков для каждой задачи я прикинул на глаз. По мере того, как система начинает вести себя откровенно неадекватно, я увеличиваю их, но памяти остается все меньше и меньше. Есть конечно всяческие макросы и функции для отслеживания стека и его переполнения, но ведь есть определенная вероятность того, что они соврут при возникновении переполнения. Очевидно, правильнее всего решать эту проблему еще на этапе компиляции, до отладки. (Мне так кажется.) Но по С/С++ коду "вычислить на глаз" требуемый стек не всегда возможно, если, например, происходит обращение к функциям из третьесторонних библиотек, и уж тем более, если они не имеют исходных кодов, а линкуются, да и куда там, надо еще знать, какие эпилоги к функциям генерирует компилятор...
Вопрос. Есть ли в GCC средства, чтобы прогнать всевозможные ветви выполнения заданной функции и определить самую глубокую точку, которой достигает стек ?
Меня интересует больше общий подход и методика, поэтому конкретную ось и микроконтроллер не называю, но если интересно: FreeRTOS (адаптированный порт ATMega323) и ATMega128.

P.S. Если уж на то пошло, подскажите какой-нить обзор по инструментам gcc (м.б. bintools ?), а то как открою директорию bin и сразу воображению предстают всякие мощные и гибкие возможности, которыми я не владею rolleyes.gif

Сообщение отредактировал artymen - Nov 5 2010, 15:33


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post



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

 


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


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