|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Jan 30 2009, 16:37
|

Местный
  
Группа: Свой
Сообщений: 331
Регистрация: 22-07-08
Из: Р О С С И Я
Пользователь №: 39 145

|
Цитата(DreamTwister @ Jan 30 2009, 17:47)  FreeRTOS 4.4.0 Микроконтроллер lpc2142
Задачи потребляют очень много стека. Хочется узнать на что они его расходуют. Просто очень странно, что задача, которая управляет зажиганием 2-х светодиодов, требует 220 байт под стек! Можно ли с этим что-то сделать? каким сделали такой и есть. Основная причина множество локальных данных. Большие массивы структуры. У меня все потоки используют по 120байт, какими бы тяжелыми они не были. Главное пользоваться почаще malloc(...), free(...)
|
|
|
|
|
Feb 2 2009, 05:08
|
Участник

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

|
Что-то тут не так...
Закрыл комментариями все содержимое задачи, оставил только for(;;). Потребление не изменилось. Может проблема в том, что для "измерения" потребления стека я использую vTaskList?
Может имеет смысл заменить heap_1.c на что-то более подходящее?
|
|
|
|
|
Feb 4 2009, 20:45
|

Участник

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419

|
Цитата(DreamTwister @ Feb 2 2009, 09:08)  Что-то тут не так...
Закрыл комментариями все содержимое задачи, оставил только for(;;). Потребление не изменилось. Может проблема в том, что для "измерения" потребления стека я использую vTaskList? Да как вы не понимаете не задача ваш стек ест а обработчик прерываний
--------------------
|
|
|
|
|
Feb 9 2009, 07:38
|
Участник

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

|
Цитата(HARMHARM @ Feb 7 2009, 20:02)  Вообще-то у ARM под прерывания отдельный стек... Да и сверхоперативных регистров тоже отдельный набор... Вот я тоже не понимаю, если прерывание потребляет стек задачи, то получается, что если я проинициализирую еще парочку прерываний, то у меня по килобайту стека на каждую задачу уходить будет? Вот и охота разобраться, как и на что расходуется стек во FreeRTOS.
|
|
|
|
|
Feb 14 2009, 14:19
|

Участник

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419

|
Цитата(HARMHARM @ Feb 7 2009, 19:02)  Вообще-то у ARM под прерывания отдельный стек... Да и сверхоперативных регистров тоже отдельный набор... А извините не знал. Каюсь у меня AVR
--------------------
|
|
|
|
|
Jan 26 2010, 14:28
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066

|
Объясните пожалуйста.
Правильно ли я понимаю, что в freeRTOS прерывания используют стек текущей задачи, и соответственно стеки задач должны иметь запас на хранение контекста(-ов) прерываний ?
В самой freeRTOS нету средств для, скажем, переключения всех прерываний на отдельный стек, как в scmRTOS ? Ддя небольших процессоров было бы нелишне.
Сообщение отредактировал vitko - Jan 26 2010, 14:41
|
|
|
|
|
Jan 28 2010, 17:00
|
Ортодокс
  
Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775

|
Цитата(vitko @ Jan 26 2010, 16:28)  В самой freeRTOS нету средств для, скажем, переключения всех прерываний на отдельный стек, как в scmRTOS ?. А зачем? Либо м/к поддерживает такую возможность на уровне архитектуры и тогда RTOS это принимает как данность. Либо не поддерживает и тогда IMHO лучше облегчать прерывания и обработку, активно кушающую стек, оформлять как отдельную задачу, чем делать программные манипуляции на грани фола связанные с переключением стека.
|
|
|
|
|
Jan 29 2010, 14:01
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066

|
Цитата(zltigo @ Jan 28 2010, 19:07)  ... Несколько команд изменяющих и восстанавливающих указатель стека - добавляются по месту легко и непренужденно. Если, оно конечно, это надо. В мелких процессорах (типа AVR) может и понадобиться. А если еще и переключение контекста делать в каком-будь специально выделенном программом прерывании, а в прерывании от сист.таймера его только инициировать, то и вообще не надо по каждому тику сохранять/восстанавливать контекст. Но это уже будет совсем как в scmRTOS :-)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|