|
|
  |
Подскажите какие микрооперационки лучше |
|
|
|
Apr 7 2005, 10:46
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551

|
Цитата(savcom @ Apr 6 2005, 22:42) Требуется организовать выполнение трех независмых задач. Интересует доступность, надежность и работа в реальном времени, ну и конечно простота в использовании. Заранее спасибо. Три задачи я бы сделал как стейт машину. Все поместилось бы на одной диаграмме  А самая лучшая ОС - та которую сделал сам. Всегда понимаешь что с ней происходит. Из готовых имхо лучше те, которые имеют исчерпывающие доки. Мне понравились UCOS и scmRTOS. Правда первая тяжеловата, а второй нужен ЕС++ компилятор
|
|
|
|
|
Apr 7 2005, 13:05
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Apr 11 2005, 18:53
|
Частый гость
 
Группа: Свой
Сообщений: 80
Регистрация: 27-12-04
Из: Москва
Пользователь №: 1 708

|
Цитата(si21 @ Apr 9 2005, 06:32) Неплохо хотя бы пару слов о "железе", на котором задачи должны выполняться, и сам общий характер задач. Железо предполагается использовать с архитектурой ARM например LPC2131. Одну задачу выделить на обслуживание навигационного приемника (подключен к последовательному порту), вторую на обслуживание GSM модема (подключен к последовательному порту), третью на обслужавние различных периферийных датчиков (акселерометр, тревожная кнопка и т.д.). Согласен, что можно все это организовать и без многозадачности, но хочеться заодно изучить работу с микрооперационкой.
|
|
|
|
|
Apr 14 2005, 22: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 как бы все элегантнее.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|