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

 
 
 
Reply to this topicStart new topic
> Подскажите какие микрооперационки лучше
savcom
сообщение Apr 6 2005, 19:42
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 27-12-04
Из: Москва
Пользователь №: 1 708



Требуется организовать выполнение трех независмых задач. Интересует доступность, надежность и работа в реальном времени, ну и конечно простота в использовании. Заранее спасибо.
Go to the top of the page
 
+Quote Post
ig_z
сообщение Apr 7 2005, 10:46
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



Цитата(savcom @ Apr 6 2005, 22:42)
Требуется организовать выполнение трех независмых задач. Интересует доступность, надежность и работа в реальном времени, ну и конечно простота в использовании. Заранее спасибо.
*


Три задачи я бы сделал как стейт машину. Все поместилось бы на одной диаграмме smile.gif

А самая лучшая ОС - та которую сделал сам. Всегда понимаешь что с ней происходит.

Из готовых имхо лучше те, которые имеют исчерпывающие доки. Мне понравились UCOS и scmRTOS. Правда первая тяжеловата, а второй нужен ЕС++ компилятор
Go to the top of the page
 
+Quote Post
Andrey_Sudnov
сообщение Apr 7 2005, 13:05
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 15-03-05
Пользователь №: 3 361



Три задачи - вполне можно обойтись без RTOS. Иногда можно и без многозадачности вообще (просто в цикле вызываем Task1, Task2, Task3).
Если нужна именно многозадачность, то она бывает вытесняющая (когда шедулер может сам снять какой-либо задачу/поток и переключиться на более приоритетную задачу) и кооперативная (потоки сами решают, когда отдать управление и позволить переключиться на другие задачи). Кооперативная делается относительно легко. Для переключения контекста сохраняем регистры и загружаем PC той задачи, на которую переключаемся. Переключение делаем в обработчиках прерываний, в обработчике Idle и в функции, которая вызывается задачами по окончании цикла обслуживания(чтобы позволить выполниться другим задачам).
Если нужна вытесняющая многозадачность (сложно разделить задачи на циклы с максимальной продолжительностью, скажем, 1/50 сек), то конечно лучше использовать RTOS, причем жесткую. Советую посмотреть RTEMS (http://www.rtems.org). У них есть характеристики по времени отклика для различных платформ в доках.

Советую поискать книгу Дмитрий Иртегов. Введение в операционные системы

Вообще по RealTime в peer-to-peer сетях полно книг. Например:
Addison Wesley - Real-Time Design Patterns - Robust Scalable Architecture For Real-Time Systems
CMP Books - Real-Time Concepts For Embedded Systems
Design and Implementation of RT Software for Control of Mechanical Systems
Introduction to RTOS
John Wiley & Sons - Real-Time Systems - Scheduling, Analysis and Verification
Modelling and Verification of RT Systems Using Timed Automata
Numerical Methods - Real-Time and Embedded Systems Programming
Prentice Hall - Real-time Systems Specification Verification and Analysis
RTOS - Microkernels for Embedded Systems
Wiley&IEEE Press - Real-Time System Design and Analysis
Go to the top of the page
 
+Quote Post
si21
сообщение Apr 9 2005, 02:32
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 9-04-05
Из: г. Минск
Пользователь №: 3 984



Неплохо хотя бы пару слов о "железе", на котором задачи должны выполняться, и сам общий характер задач.
В целом, достаточно просто портируется, используется и осваивается µC/OS (http://www.ucos-ii.com/), позволяя выполнять задачу высшего приоритета в абсолютном real-time (остальным - что достанется по времени).
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 10 2005, 12:01
Сообщение #5


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Я переносил scmRTOS на 386ex под Borland 5.5. Никаких проблем в плане ограничений от EC++. А переключатель задач я сделал по типу ucos'а. Для теста сделал четыре задачки - три просто выводили на экран сообщения с разной задержкой, а четвертая задача - наше собственное firmware с кучей прерываний от USB, LPT, таймеров и прочего. Все заработало почти сразу. Единственное надо четко было определиться с стеками задач. До чего не дошли руки, так это проверить семафоры, обмен сообщениями и прочее. А так у меня осталось приятное впечатлений от идей, реализации и документации (особенно понравился прикол про Гиви и ОС) . Все просто, понятно и работает. Да, ядро заняло меньше 2 Kb.
Go to the top of the page
 
+Quote Post
savcom
сообщение Apr 11 2005, 18:53
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 27-12-04
Из: Москва
Пользователь №: 1 708



Цитата(si21 @ Apr 9 2005, 06:32)
Неплохо хотя бы пару слов о  "железе", на котором задачи должны выполняться, и сам общий характер задач.
*


Железо предполагается использовать с архитектурой ARM например LPC2131. Одну задачу выделить на обслуживание навигационного приемника (подключен к последовательному порту), вторую на обслуживание GSM модема (подключен к последовательному порту), третью на обслужавние различных периферийных датчиков (акселерометр, тревожная кнопка и т.д.). Согласен, что можно все это организовать и без многозадачности, но хочеться заодно изучить работу с микрооперационкой.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 12 2005, 14:12
Сообщение #7


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Возьмите uC/OS-II или FreeRTOS.
Порты для ARM имеются.
Документация хорошая, даже на русском (хотя я советую читать в оригинале - меньше возможности ошибиться).
Зайдите также на форум по RTOS здесь же (это с самого начала следовало сделать wink.gif ).
Go to the top of the page
 
+Quote Post
si21
сообщение Apr 12 2005, 20:08
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 9-04-05
Из: г. Минск
Пользователь №: 3 984



Как я уже писал, советую использовать µC/OS - ее достоинства уже ранее не однократно обсуждались на конференциях данного сайта. Успехов smile.gif
Go to the top of the page
 
+Quote Post
savcom
сообщение Apr 13 2005, 05:24
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 27-12-04
Из: Москва
Пользователь №: 1 708



Спасибо за советы, думаю µC/OS то что надо.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 14 2005, 22:10
Сообщение #10


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Давайте перейдем от общих рассуждений к более конкретным вещам. Как я уже писал, я портировал scmRTOS на 386ex в protected mode. Сама scmRTOS чрезвычайно простая и компактная система, соответственно обладает малыми накладными расходами на обеспечение многозадачности. Собственно task_switcher я вообще написал на ассемблере, т.е. короче и быстрее некуда. Чтобы обеспечить одновременную поддержку многозадачности и системы прерываний переключатель задач сделан по типу uCOS’а. Понятное дело, что iret в protected mode не слишком быстро работает, но тут уж ничего не поделаешь. Сухой остаток. В реальной системе на 386ex 25 MHz на переключение задач у меня уходило порядка 110 мксек (крутится две задачи, которые друг другу передают управление по event’у). Думаю, это и есть, во многом, ответ на вопрос – нужна ли RTOS или можно без нее. Если хватает быстродействия, то с RTOS как бы все элегантнее.
Go to the top of the page
 
+Quote Post

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

 


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


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