Перейти к содержанию
    

Ну а фол-то где?

Какой фол? Было сказано "на грани фола" - согласитесь, что это не одно и то же.

Несколько команд изменяющих и восстанавливающих указатель стека - добавляются по месту легко и непренужденно.

Не спорю.

Если, оно конечно, это надо.

Вот именно. И, скорее всего, в 99 случаях из 100 будет необоснованно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какой фол? Было сказано "на грани фола" - согласитесь, что это не одно и то же.

 

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Если нужен пример, пожалуйста - переключение стека в фиксированную область во вложенных прерываниях.

Хотя для отчаянных ребят, программирующих в стиле "а-ля улыбнитесь, каскадеры" это, конечно, не довод ;) . И, честно говоря, нет ни малейшего желания вступать в дебаты по этому поводу. Хотел только предупредить, а дальше уж, как говорится, каждый выбирает для себя...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И, честно говоря, нет ни малейшего желания вступать в дебаты....

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

В общем смысле любая программа либо работает, либо нет. Занимается она "сложным переключением контекста" или вычислением 2+2 - совершенно без разницы с точки зрения "надежности" работы устройства. Другое дело - нагрузка на голову программиста, но это вопрос профессионализма и навыка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

 

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

 

Почему именно 176?

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

 

>704 байта оперативы. что в общем то не кашерно при наличии 8к оперативы.

 

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

 

Контроллер слабоват. Нужен более мощный.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

 

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

Думаю, не ошибусь, если скажу так: выделяете под задачу столько стека, сколько бы выделили для ее работы без операционки в свойствах линкера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему именно 176?

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

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

 

а 176 - экспериментальным путем получено.

указываю меньше 32 - вообще задача не запускается

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а число 32разрядных слов.

 

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

 

 

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

 

ИМХО сомнительный подход.

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

 

void f2()
{
}
void f1()
{
    f2();
}

void main()
{
   f1()
}

 

Для этого кода уровень вложенности не 2, столько сколько компилятор сделает.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

а камень - stm32f100rb

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

согласен.

 

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

 

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

Лишняя?

Стек надо как-то учитывать....

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

 

а камень - stm32f100rb

Понятно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...