|
|
  |
Как отловить переполнение стека, LPC2142. |
|
|
|
Nov 7 2008, 12:46
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Решаю вопросы по оптимизации работы оперативной памяти, так как ее стало не хватать. Для начала решил разобраться с использованием стека, но не совсем понимаю принцип работы следующей процедуры, которой настоятельно советуют воспользоваться авторы операционки.
unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR *pucStackByte )
Что нужно в нее передавать? Вершину стека? Откуда вызывать данную функция? Я так понял, что ее можно вызвать из выполняемой задачи и посмотреть, сколько эта задача "кушает" сетка.
Или я что-то не понимаю.
Компилятор - IAR. Версия ОС - FreeRTOS 4.4.0.
|
|
|
|
|
Nov 10 2008, 05:06
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Поковырял я исходники, но смысл проблемы особо не изменился.
В функции xTaskCreate объявляется ряд структур, а именно: pxCurrentTCB pxNewTCB.
Проблема в том, что они все локальные и никуда не передаются. В них содержаться параметры стека, которые мне нужны. Как их лучше оттуда выковырять?
Или там есть более простой способ?
|
|
|
|
|
Nov 10 2008, 12:37
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Странно, но это функции в своей версии ОС я так и не увидел, зато обнаружилась:
vTaskList( portCHAR *pcWriteBuffer );.
Для дебага сойдет, я думаю. Тем более там можно просматривать многие другие параметры задач.
|
|
|
|
|
Nov 10 2008, 13:13
|

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

|
Цитата(DreamTwister @ Nov 10 2008, 15:37)  Странно, но это функции в своей версии ОС я так и не увидел, зато обнаружилась: Стесняюсь спросить, а какого не взять текущую версию? Цитата vTaskList( portCHAR *pcWriteBuffer );. Ее и переписать в первую очередь, ибо использовать для распечатки отдельный буфер просто не разумно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 11 2008, 07:08
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436

|
Да уж, использовать лишние 100 байт для мониторинга задач - не есть хорошо. Но для самопроверки сойдет и такая функция, все равно из конечной прошивки она будет убрана.
Это мой первый опыт работы с операционными системами реального времени, чувствуется сильная нехватка опыта.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|