|
2 страниц
< 1 2
|
 |
Ответов
(15 - 27)
|
Jan 31 2010, 22:04
|
Ортодокс
  
Группа: Свой
Сообщений: 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 будет необоснованно.
|
|
|
|
|
Feb 1 2010, 00:41
|
Ортодокс
  
Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775

|
На грани фола в моем понимании означает, что сильно увеличивается потенциальная опасность возникновения ошибок, приводящих к труднодиагностируемому краху системы. Если нужен пример, пожалуйста - переключение стека в фиксированную область во вложенных прерываниях. Хотя для отчаянных ребят, программирующих в стиле "а-ля улыбнитесь, каскадеры" это, конечно, не довод  . И, честно говоря, нет ни малейшего желания вступать в дебаты по этому поводу. Хотел только предупредить, а дальше уж, как говорится, каждый выбирает для себя...
|
|
|
|
|
Dec 23 2011, 15:51
|
Участник

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

|
начал осваивать rtos
правильно ли я понимаю что при создании задачи размер стека надо указывать в зависимости от того, сколько вложенных функций будет в самой задаче? то есть если в задаче глубина вложенности функций будет например 10, то и размер стека надо указывать >176? то есть такая задача отожрет >704 байта оперативы. что в общем то не кашерно при наличии 8к оперативы.
или что то я не так делаю?
|
|
|
|
|
Dec 23 2011, 16:07
|
Гуру
     
Группа: Свой
Сообщений: 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к оперативы.
или что то я не так делаю? Контроллер слабоват. Нужен более мощный.
|
|
|
|
|
Dec 23 2011, 16:45
|
Участник

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

|
Цитата(_Артём_ @ Dec 23 2011, 19:07)  Почему именно 176? Каждый уровень потребляет 17,6 байта? ну не 17,6 байта. Я так понял что указываемое значение - это не число байт, а число 32разрядных слов. а 176 - экспериментальным путем получено. указываю меньше 32 - вообще задача не запускается а потом добавляю по 16 на каждый уровень вложенности функций, иначе вылетает в vApplicationStackOverflowHook
|
|
|
|
|
Dec 23 2011, 17:09
|
Гуру
     
Группа: Свой
Сообщений: 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, столько сколько компилятор сделает.
|
|
|
|
|
Dec 23 2011, 17:57
|
Участник

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

|
согласен. тогда получается лишняя заморочка по расчету того сколько же стека нужно задаче.... а камень - stm32f100rb
|
|
|
|
|
Dec 23 2011, 20:08
|
Гуру
     
Группа: Свой
Сообщений: 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 Понятно
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|