Перейти к содержанию
    

Подскажите какие микрооперационки лучше

Требуется организовать выполнение трех независмых задач. Интересует доступность, надежность и работа в реальном времени, ну и конечно простота в использовании. Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Требуется организовать выполнение трех независмых задач. Интересует доступность, надежность и работа в реальном времени, ну и конечно простота в использовании. Заранее спасибо.

 

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

 

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

 

Из готовых имхо лучше те, которые имеют исчерпывающие доки. Мне понравились UCOS и scmRTOS. Правда первая тяжеловата, а второй нужен ЕС++ компилятор

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Три задачи - вполне можно обойтись без 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неплохо хотя бы пару слов о "железе", на котором задачи должны выполняться, и сам общий характер задач.

В целом, достаточно просто портируется, используется и осваивается µC/OS (http://www.ucos-ii.com/), позволяя выполнять задачу высшего приоритета в абсолютном real-time (остальным - что достанется по времени).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я переносил scmRTOS на 386ex под Borland 5.5. Никаких проблем в плане ограничений от EC++. А переключатель задач я сделал по типу ucos'а. Для теста сделал четыре задачки - три просто выводили на экран сообщения с разной задержкой, а четвертая задача - наше собственное firmware с кучей прерываний от USB, LPT, таймеров и прочего. Все заработало почти сразу. Единственное надо четко было определиться с стеками задач. До чего не дошли руки, так это проверить семафоры, обмен сообщениями и прочее. А так у меня осталось приятное впечатлений от идей, реализации и документации (особенно понравился прикол про Гиви и ОС) . Все просто, понятно и работает. Да, ядро заняло меньше 2 Kb.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неплохо хотя бы пару слов о  "железе", на котором задачи должны выполняться, и сам общий характер задач.

 

Железо предполагается использовать с архитектурой ARM например LPC2131. Одну задачу выделить на обслуживание навигационного приемника (подключен к последовательному порту), вторую на обслуживание GSM модема (подключен к последовательному порту), третью на обслужавние различных периферийных датчиков (акселерометр, тревожная кнопка и т.д.). Согласен, что можно все это организовать и без многозадачности, но хочеться заодно изучить работу с микрооперационкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возьмите uC/OS-II или FreeRTOS.

Порты для ARM имеются.

Документация хорошая, даже на русском (хотя я советую читать в оригинале - меньше возможности ошибиться).

Зайдите также на форум по RTOS здесь же (это с самого начала следовало сделать ;) ).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я уже писал, советую использовать µC/OS - ее достоинства уже ранее не однократно обсуждались на конференциях данного сайта. Успехов :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...