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

 
 
> Расход стека
DreamTwister
сообщение Jan 30 2009, 12:47
Сообщение #1


Участник
*

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



FreeRTOS 4.4.0
Микроконтроллер lpc2142

Задачи потребляют очень много стека. Хочется узнать на что они его расходуют.
Просто очень странно, что задача, которая управляет зажиганием 2-х светодиодов, требует 220 байт под стек!
Можно ли с этим что-то сделать?
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 27)
Aurochs
сообщение Jan 31 2010, 22:04
Сообщение #16


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Цитата(zltigo @ Jan 28 2010, 19:07) *
Ну а фол-то где?

Какой фол? Было сказано "на грани фола" - согласитесь, что это не одно и то же.
Цитата(zltigo @ Jan 28 2010, 19:07) *
Несколько команд изменяющих и восстанавливающих указатель стека - добавляются по месту легко и непренужденно.

Не спорю.
Цитата(zltigo @ Jan 28 2010, 19:07) *
Если, оно конечно, это надо.

Вот именно. И, скорее всего, в 99 случаях из 100 будет необоснованно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 31 2010, 22:42
Сообщение #17


Гуру
******

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



Цитата(Aurochs @ Feb 1 2010, 00:04) *
Какой фол? Было сказано "на грани фола" - согласитесь, что это не одно и то же.



Хочу знать что за фол о нахождении на грани которого Вы говорите. 

 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Feb 1 2010, 00:41
Сообщение #18


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



На грани фола в моем понимании означает, что сильно увеличивается потенциальная опасность возникновения ошибок, приводящих к труднодиагностируемому краху системы.
Если нужен пример, пожалуйста - переключение стека в фиксированную область во вложенных прерываниях.
Хотя для отчаянных ребят, программирующих в стиле "а-ля улыбнитесь, каскадеры" это, конечно, не довод wink.gif . И, честно говоря, нет ни малейшего желания вступать в дебаты по этому поводу. Хотел только предупредить, а дальше уж, как говорится, каждый выбирает для себя...
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 1 2010, 00:49
Сообщение #19


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Счётчик вложености прерываний нужен хотя бы для того, чтобы не заниматься зря перепланировкой при выходе из вложенного прерывания, делать это только при выходе из всех прерываний. А при его наличии не переключать стек во вложенных прерываниях труда не составит.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 1 2010, 06:09
Сообщение #20


Гуру
******

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



Цитата(Aurochs @ Feb 1 2010, 02:41) *
И, честно говоря, нет ни малейшего желания вступать в дебаты....

Ну когда нет аргументов, а только футбольно-киношные отсылки, то это следует признать совершенно разумным желанием.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 1 2010, 07:02
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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


В общем смысле любая программа либо работает, либо нет. Занимается она "сложным переключением контекста" или вычислением 2+2 - совершенно без разницы с точки зрения "надежности" работы устройства. Другое дело - нагрузка на голову программиста, но это вопрос профессионализма и навыка.
Go to the top of the page
 
+Quote Post
rexton
сообщение Dec 23 2011, 15:51
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-11-11
Пользователь №: 68 153



начал осваивать rtos

правильно ли я понимаю что при создании задачи размер стека надо указывать в зависимости от того, сколько вложенных функций будет в самой задаче?
то есть если в задаче глубина вложенности функций будет например 10, то и размер стека надо указывать >176? то есть такая задача отожрет >704 байта оперативы. что в общем то не кашерно при наличии 8к оперативы.

или что то я не так делаю?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 23 2011, 16:07
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(rexton @ Dec 23 2011, 17:51) *
начал осваивать rtos

правильно ли я понимаю что при создании задачи размер стека надо указывать в зависимости от того, сколько вложенных функций будет в самой задаче?


Про локальные переменные тоже надо не забывать.


Цитата(rexton @ Dec 23 2011, 17:51) *
то есть если в задаче глубина вложенности функций будет например 10, то и размер стека надо указывать >176? то есть такая задача отожрет


Почему именно 176?
Каждый уровень потребляет 17,6 байта?

Цитата(rexton @ Dec 23 2011, 17:51) *
>704 байта оперативы. что в общем то не кашерно при наличии 8к оперативы.

или что то я не так делаю?


Контроллер слабоват. Нужен более мощный.
Go to the top of the page
 
+Quote Post
kan35
сообщение Dec 23 2011, 16:12
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(rexton @ Dec 23 2011, 19:51) *
начал осваивать rtos

правильно ли я понимаю что при создании задачи размер стека надо указывать в зависимости от того, сколько вложенных функций будет в самой задаче?
то есть если в задаче глубина вложенности функций будет например 10, то и размер стека надо указывать >176? то есть такая задача отожрет >704 байта оперативы. что в общем то не кашерно при наличии 8к оперативы.

или что то я не так делаю?

Думаю, не ошибусь, если скажу так: выделяете под задачу столько стека, сколько бы выделили для ее работы без операционки в свойствах линкера.
Go to the top of the page
 
+Quote Post
rexton
сообщение Dec 23 2011, 16:45
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-11-11
Пользователь №: 68 153



Цитата(_Артём_ @ Dec 23 2011, 19:07) *
Почему именно 176?
Каждый уровень потребляет 17,6 байта?

ну не 17,6 байта. Я так понял что указываемое значение - это не число байт, а число 32разрядных слов.

а 176 - экспериментальным путем получено.
указываю меньше 32 - вообще задача не запускается
а потом добавляю по 16 на каждый уровень вложенности функций, иначе вылетает в vApplicationStackOverflowHook
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 23 2011, 17:09
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(rexton @ Dec 23 2011, 18:45) *
а число 32разрядных слов.


А какая архитектура?


Цитата(rexton @ Dec 23 2011, 18:45) *
а потом добавляю по 16 на каждый уровень вложенности функций, иначе вылетает в vApplicationStackOverflowHook


ИМХО сомнительный подход.
Могу ошибаться, но мне кажется, что уровень вложенности не равен количеству вызовов функций:

Код
void f2()
{
}
void f1()
{
    f2();
}

void main()
{
   f1()
}


Для этого кода уровень вложенности не 2, столько сколько компилятор сделает.
Go to the top of the page
 
+Quote Post
rexton
сообщение Dec 23 2011, 17:57
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-11-11
Пользователь №: 68 153



согласен. тогда получается лишняя заморочка по расчету того сколько же стека нужно задаче....
а камень - stm32f100rb


Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 23 2011, 20:08
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(rexton @ Dec 23 2011, 19:57) *
согласен.


C чем именно согласны?

Цитата(rexton @ Dec 23 2011, 19:57) *
тогда получается лишняя заморочка по расчету того сколько же стека нужно задаче....

Лишняя?
Стек надо как-то учитывать....
Если стека не хватает работать не будет. А говорите - лишняя.

Цитата(rexton @ Dec 23 2011, 19:57) *
а камень - stm32f100rb

Понятно
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:16
Рейтинг@Mail.ru


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