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

 
 
 
Reply to this topicStart new topic
> 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
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
zltigo
сообщение May 27 2007, 09:22
Сообщение #8


Гуру
******

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



Цитата(YKonstantin @ May 27 2007, 11:44) *
Что это такое - "CSTACK"?

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

GCC этот компилятор называется smile.gif.


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


Участник
*

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



По поводу UserStack - да, его нет.
А вот с SystemStack ...
Проверил еще раз и сделал вывод о том, что начитался примеров от криворуких авторов!
Примеры для IAR не трогают SysMode, а примеры для GCC содержат инициализацию SysMode в стартап-файле.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 27 2007, 11:34
Сообщение #10


Гуру
******

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



Цитата(YKonstantin @ May 27 2007, 13:41) *
По поводу UserStack - да, его нет.
А вот с SystemStack ...

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

К сожалению, такие примеры преобладают в интернете sad.gif Всегда нужно при возможности критически оценивать sad.gif.
Ну а демка порта IAR для AT91SAM7 в части инициализации стеков содержит своих тараканов - сегменты под стеки не описали - просто откусили с конца памяти линкеру не сообщив. Вот весело будет, когда память на стеки молча наедет..


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


Участник
*

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



Цитата(zltigo @ May 27 2007, 14:34) *
У этих режимов один и тот-же Stack и набор регистров smile.gif


Теперь ясно.

Сообщение отредактировал YKonstantin - May 27 2007, 14:20
Go to the top of the page
 
+Quote Post

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

 


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


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