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

 
 
 
Reply to this topicStart new topic
> RTOS с единым стеком, Ищу аналог RTX166 Tiny
scifi
сообщение Mar 28 2010, 08:55
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Добрый день!
Давным-давно мне довелось использовать Keil RTX166 Tiny. Там есть интересная фича: задачи используют единый стек, и при переключении задач стек передвигается нужным образом автоматически:
RTX166 Tiny Stack Management
Таким образом, нет нужды выделять отдельный стек для каждой задачи, то есть имеет место существенная экономия памяти.
Вопрос: где найти RTOS с такой фичей, которую можно прикрутить к ARM и Coldfire?
Go to the top of the page
 
+Quote Post
alcosar
сообщение Mar 28 2010, 13:33
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 30-03-06
Пользователь №: 15 598



sst
http://state-machine.com/
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 28 2010, 14:04
Сообщение #3


Гуру
******

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



Цитата(scifi @ Mar 28 2010, 11:55) *
Там есть интересная фича: задачи используют единый стек, и при переключении задач....

Это не фича, это обманка, ибо "переключения задач" собственно быть не может sad.gif. Со стеком при прерывании задачи в произвольном месте все очень просто - либо он нужен такого размера каждой из задач, либо нет. Посему просто надо четко представлять необходимые размеры стеков для вытесняющих задач и комбинировать их с кооперативными задачами имеющими по определению общий стек.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 28 2010, 19:58
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(zltigo @ Mar 28 2010, 18:04) *
Это не фича, это обманка, ибо "переключения задач" собственно быть не может sad.gif. Со стеком при прерывании задачи в произвольном месте все очень просто - либо он нужен такого размера каждой из задач, либо нет. Посему просто надо четко представлять необходимые размеры стеков для вытесняющих задач и комбинировать их с кооперативными задачами имеющими по определению общий стек.

Что такое "переключение задач" и почему его "быть не может" спорить не стану. Одно знаю точно: многопотоковость имела место. Да и не в этом вопрос.
Переформулирую: какие есть RTOS (или как их там, прошу к терминам не предираться), в которых не выделяется отдельный стек для каждой задачи, а используется общий? С целью экономии памяти, естественно.
Спасибо alcosar за ссылку про SST. На что-то похожее натыкался, когда читал про smx RTOS и One-Shot Tasks.
Я понимаю, что единый стек требует жертв. Например, в RTX166 Tiny нельзя использовать указатели на локальные переменные, так как стек "двигается" при переключении контекста. Видел также Salvo RTOS, где ограничения ещё более строгие, но подкупает крайняя нетребовательность к объёму памяти.
Все эти подходы имеют право на жизнь в зависимости от задачи. Я просто хочу понять, какие бывают варианты.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 28 2010, 20:35
Сообщение #5


Гуру
******

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



Цитата(scifi @ Mar 28 2010, 22:58) *
Я понимаю, что единый стек требует жертв.

Слишком большие жертвы sad.gif. И главное зачем? От фонаря с явным запасом выбрать один стек и при этом никак не решить проблему правильного выбора размера стека? Надо решать проблему оптимального выбора стека для задач и тогда сумма стеков по крайней мере не будет резко отличаться от тяжко прогнозируемого "объединенного" стека и при этом не иметь ограничений.


Цитата(scifi @ Mar 28 2010, 22:58) *
Видел также Salvo RTOS, где ограничения ещё более строгие, но подкупает крайняя нетребовательность к объёму памяти.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 28 2010, 20:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(zltigo @ Mar 29 2010, 00:35) *
Вот и используйте, как уже писал, там где возможно и кооперативные задачи, как у Salvo. Сочетайте ОБА подхода,а не сводите все к примитиву в угоду идее бездумной экономии стека.

Значит, есть RTOS, в которых можно сочетать подходы "единый стек" и "раздельный стек"? Если не трудно, назовите примеры.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 28 2010, 21:41
Сообщение #7


Гуру
******

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



Цитата(scifi @ Mar 28 2010, 23:55) *
Если не трудно, назовите примеры.

Free RTOS kernel - preemptive, cooperative and hybrid configuration options.
The SafeRTOS derivative product provides a high level of confidence in the code integrity.
Official support for 23 architectures (counting ARM7 and ARM Cortex M3 as one architecture each).
FreeRTOS-MPU supports the Cortex M3 Memory Protection Unit (MPU).
Designed to be small, simple and easy to use. Typically a kernel binary image will be in the region of 4K to 9K bytes.
Very portable code structure predominantly written in C.
Supports both tasks and co-routines.
Powerful execution trace functionality.
Stack overflow detection options.
No software restriction on the number of tasks that can be created.
No software restriction on the number of priorities that can be used.
No restrictions imposed on priority assignment - more than one task can be assigned the same priority.
Queues, binary semaphores, counting semaphores, recursive semaphores and mutexes for communication and synchronisation between tasks, or between tasks and interrupts.
Mutexes with priority inheritance.
Free development tools (Cortex-M3, ARM7, MSP430, H8/S, AMD, AVR, x86 and 8051 ports).
Free embedded software source code.
Royalty free.
Cross development from a standard Windows host.
Pre-configured demo applications for selected single board computers allowing 'out of the box' operation and fast learning curve.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dch
сообщение Mar 29 2010, 05:13
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



вообщето отдельный стэк это победа эмбедеров, написанием полностью своего кода сейчас мало кто занимается, linux привычной вещью применительно к железке в пять баксов
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 29 2010, 05:19
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Спасибо. Что-то я не сразу сообразил, что FreeRTOS Co-routines - это практически то же самое, что и у Salvo RTOS.
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 29 2010, 10:09
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Оказывается, вот что мне нужно было:

Coroutines in C

Век живи - век учись.

Надеюсь, кому-нибудь ещё пригодится.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 29 2010, 10:53
Сообщение #11


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(scifi @ Mar 29 2010, 12:09) *
Оказывается, вот что мне нужно было:
Coroutines in C
О, а теперь коленом, когда уже знаете, что нужно - поищите по форуму слова
coroutines
сопрограммы
protothreads


и на руб зараза ещё TinyTimber


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 29 2010, 18:19
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Что-то у Вас много зачёркнуто. Нынче компьютеры в моде, не обязательно пользоваться пишущей машинкой, маркером и корректором :-)
Спасибо за ссылки. Я через гугл на это всё вышел. Понравилась "библиотека" Protothreads от Adam Dunkels. Хороший парень этот Адам Дункельс: подарил нам Lwip, uIP, а теперь ещё и Protothreads. Побольше бы таких...
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th September 2024 - 03:41
Рейтинг@Mail.ru


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