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

 
 
> FreeRTOS на AT91SAM7, непонятно с Supervisor Mode
YKonstantin
сообщение May 26 2007, 13:07
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 7-11-06
Пользователь №: 22 038



В имеющихся примерах (от самой FreeRTOS и от WinARM), под "Supervisor Mode" выделяют обьемный (от 256 до 1К) стек.
Однако все потоки выполняются в "System mode", а тело планировщика в прерывании от таймера (т.е. в IRQ Mode).

Вопрос : зачем стек неработающему режиму?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение May 26 2007, 14:32
Сообщение #2


Гуру
******

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



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

В Supervisor проходит вся инициализация и scheduler работает (посмотрите taskYIELD() ) в нем а не только в IRQ.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
YKonstantin
сообщение May 26 2007, 16:13
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 7-11-06
Пользователь №: 22 038



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


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

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

(смехота, в примерах с вытесняющей многозадачностью - вектор прерывания SWI указывает на заглушку, но SVC-stack имеет размер в 1К)
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 26 2007, 16:57
Сообщение #4


Гуру
******

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



Цитата(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" стек.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
YKonstantin
сообщение May 26 2007, 18:25
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 7-11-06
Пользователь №: 22 038



Мда-с. Сразу не обратил внимание на количество ссылок на "taskYIELD".
Должен признать : используется, да еще как [используется]!

Значит просто уменьшу размер стека ...
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 26 2007, 18:52
Сообщение #6


Гуру
******

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



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

Уменьшайте - посчитав или просто посмотрев сколько реально кушается. Там для шедулера килобайты совсем не нужны.
Ну а CSTACK выбросили?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
YKonstantin
сообщение May 27 2007, 08:44
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 7-11-06
Пользователь №: 22 038



Цитата(zltigo @ May 26 2007, 21:52) *
Ну а CSTACK выбросили?



Что это такое - "CSTACK"?
(использую WinARM)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:09
Рейтинг@Mail.ru


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