Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FreeRTOS на AT91SAM7
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
YKonstantin
В имеющихся примерах (от самой FreeRTOS и от WinARM), под "Supervisor Mode" выделяют обьемный (от 256 до 1К) стек.
Однако все потоки выполняются в "System mode", а тело планировщика в прерывании от таймера (т.е. в IRQ Mode).

Вопрос : зачем стек неработающему режиму?
zltigo
Цитата(YKonstantin @ May 26 2007, 16:07) *
Однако все потоки выполняются в "System mode", а тело планировщика в прерывании от таймера (т.е. в IRQ Mode).

В Supervisor проходит вся инициализация и scheduler работает (посмотрите taskYIELD() ) в нем а не только в IRQ.
YKonstantin
Цитата(zltigo @ May 26 2007, 17:32) *
В Supervisor проходит вся инициализация и scheduler работает (посмотрите taskYIELD() ) в нем а не только в IRQ.


Посмотрел.
Увидел следующее : если используется "ручное" переключение потоков, или выбран не вытесняющий планировщик, то вызывая "SWI" мы в итоге вызовем код который почти 1в1 повторяет код в таймерном прерывании. И действительно, этот код будет вызван из Supervisor Mode.

Значит ли это, что если я использую вытесняющую многозадачность и не использую со-функции, то могу уменьшить SVC-stack?

(смехота, в примерах с вытесняющей многозадачностью - вектор прерывания SWI указывает на заглушку, но SVC-stack имеет размер в 1К)
zltigo
Цитата(YKonstantin @ May 26 2007, 19:13) *
Значит ли это, что если я использую вытесняющую многозадачность и не использую со-функции, то могу уменьшить SVC-stack?

А что, Вам удалось построить систему с приложениями никогда добровольно не отдающими
время smile.gif smile.gif smile.gif? Ну довытеснялись задачи до самой приоритетной и что? Самая приоритетная никогда не кончится и все остальные будут вечно ждать?

Цитата
(смехота, в примерах с вытесняющей многозадачностью - вектор прерывания SWI указывает на заглушку, но SVC-stack имеет размер в 1К)

Не смешно. "Заглушек" нет и быть не может. Смотрите тщательнее.

P.S.
1. Размеры стеков от фонаря в 'примерах' указаны - думайте сами о достаточных размерах.
2. Если руки чешутся (и это правильно smile.gif ) уменьшить - выкиньте совсем ненужный "System Mode" стек.
YKonstantin
Мда-с. Сразу не обратил внимание на количество ссылок на "taskYIELD".
Должен признать : используется, да еще как [используется]!

Значит просто уменьшу размер стека ...
zltigo
Цитата(YKonstantin @ May 26 2007, 21:25) *
Значит просто уменьшу размер стека ...

Уменьшайте - посчитав или просто посмотрев сколько реально кушается. Там для шедулера килобайты совсем не нужны.
Ну а CSTACK выбросили?
YKonstantin
Цитата(zltigo @ May 26 2007, 21:52) *
Ну а CSTACK выбросили?



Что это такое - "CSTACK"?
(использую WinARM)
zltigo
Цитата(YKonstantin @ May 27 2007, 11:44) *
Что это такое - "CSTACK"?

Традиционное название сегмента стека, для ARM, это конечно не однозначно. Имел ввиду System/User
Stack. В портах этот сегмент обычно присутствует без всякой на то надобности. Иногда, правда, его указатель инициализируют в самый низ стеков и не указывают линкеру размер и он вроде как есть, а вроде как и нет smile.gif
Цитата
(использую WinARM)

GCC этот компилятор называется smile.gif.
YKonstantin
По поводу UserStack - да, его нет.
А вот с SystemStack ...
Проверил еще раз и сделал вывод о том, что начитался примеров от криворуких авторов!
Примеры для IAR не трогают SysMode, а примеры для GCC содержат инициализацию SysMode в стартап-файле.
zltigo
Цитата(YKonstantin @ May 27 2007, 13:41) *
По поводу UserStack - да, его нет.
А вот с SystemStack ...

У этих режимов один и тот-же Stack и набор регистров smile.gif
Цитата
Проверил еще раз и сделал вывод о том, что начитался примеров от криворуких авторов!

К сожалению, такие примеры преобладают в интернете sad.gif Всегда нужно при возможности критически оценивать sad.gif.
Ну а демка порта IAR для AT91SAM7 в части инициализации стеков содержит своих тараканов - сегменты под стеки не описали - просто откусили с конца памяти линкеру не сообщив. Вот весело будет, когда память на стеки молча наедет..
YKonstantin
Цитата(zltigo @ May 27 2007, 14:34) *
У этих режимов один и тот-же Stack и набор регистров smile.gif


Теперь ясно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.