savcom 0 6 апреля, 2005 Опубликовано 6 апреля, 2005 · Жалоба Требуется организовать выполнение трех независмых задач. Интересует доступность, надежность и работа в реальном времени, ну и конечно простота в использовании. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_z 0 7 апреля, 2005 Опубликовано 7 апреля, 2005 · Жалоба Требуется организовать выполнение трех независмых задач. Интересует доступность, надежность и работа в реальном времени, ну и конечно простота в использовании. Заранее спасибо. <{POST_SNAPBACK}> Три задачи я бы сделал как стейт машину. Все поместилось бы на одной диаграмме :) А самая лучшая ОС - та которую сделал сам. Всегда понимаешь что с ней происходит. Из готовых имхо лучше те, которые имеют исчерпывающие доки. Мне понравились UCOS и scmRTOS. Правда первая тяжеловата, а второй нужен ЕС++ компилятор Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrey_Sudnov 0 7 апреля, 2005 Опубликовано 7 апреля, 2005 · Жалоба Три задачи - вполне можно обойтись без 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
si21 0 9 апреля, 2005 Опубликовано 9 апреля, 2005 · Жалоба Неплохо хотя бы пару слов о "железе", на котором задачи должны выполняться, и сам общий характер задач. В целом, достаточно просто портируется, используется и осваивается µC/OS (http://www.ucos-ii.com/), позволяя выполнять задачу высшего приоритета в абсолютном real-time (остальным - что достанется по времени). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 10 апреля, 2005 Опубликовано 10 апреля, 2005 · Жалоба Я переносил scmRTOS на 386ex под Borland 5.5. Никаких проблем в плане ограничений от EC++. А переключатель задач я сделал по типу ucos'а. Для теста сделал четыре задачки - три просто выводили на экран сообщения с разной задержкой, а четвертая задача - наше собственное firmware с кучей прерываний от USB, LPT, таймеров и прочего. Все заработало почти сразу. Единственное надо четко было определиться с стеками задач. До чего не дошли руки, так это проверить семафоры, обмен сообщениями и прочее. А так у меня осталось приятное впечатлений от идей, реализации и документации (особенно понравился прикол про Гиви и ОС) . Все просто, понятно и работает. Да, ядро заняло меньше 2 Kb. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
savcom 0 11 апреля, 2005 Опубликовано 11 апреля, 2005 · Жалоба Неплохо хотя бы пару слов о "железе", на котором задачи должны выполняться, и сам общий характер задач. <{POST_SNAPBACK}> Железо предполагается использовать с архитектурой ARM например LPC2131. Одну задачу выделить на обслуживание навигационного приемника (подключен к последовательному порту), вторую на обслуживание GSM модема (подключен к последовательному порту), третью на обслужавние различных периферийных датчиков (акселерометр, тревожная кнопка и т.д.). Согласен, что можно все это организовать и без многозадачности, но хочеться заодно изучить работу с микрооперационкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 12 апреля, 2005 Опубликовано 12 апреля, 2005 · Жалоба Возьмите uC/OS-II или FreeRTOS. Порты для ARM имеются. Документация хорошая, даже на русском (хотя я советую читать в оригинале - меньше возможности ошибиться). Зайдите также на форум по RTOS здесь же (это с самого начала следовало сделать ;) ). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
si21 0 12 апреля, 2005 Опубликовано 12 апреля, 2005 · Жалоба Как я уже писал, советую использовать µC/OS - ее достоинства уже ранее не однократно обсуждались на конференциях данного сайта. Успехов :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
savcom 0 13 апреля, 2005 Опубликовано 13 апреля, 2005 · Жалоба Спасибо за советы, думаю µC/OS то что надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 14 апреля, 2005 Опубликовано 14 апреля, 2005 · Жалоба Давайте перейдем от общих рассуждений к более конкретным вещам. Как я уже писал, я портировал scmRTOS на 386ex в protected mode. Сама scmRTOS чрезвычайно простая и компактная система, соответственно обладает малыми накладными расходами на обеспечение многозадачности. Собственно task_switcher я вообще написал на ассемблере, т.е. короче и быстрее некуда. Чтобы обеспечить одновременную поддержку многозадачности и системы прерываний переключатель задач сделан по типу uCOS’а. Понятное дело, что iret в protected mode не слишком быстро работает, но тут уж ничего не поделаешь. Сухой остаток. В реальной системе на 386ex 25 MHz на переключение задач у меня уходило порядка 110 мксек (крутится две задачи, которые друг другу передают управление по event’у). Думаю, это и есть, во многом, ответ на вопрос – нужна ли RTOS или можно без нее. Если хватает быстродействия, то с RTOS как бы все элегантнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться