mRTOS - кооперативная операционная система для

микроконтроллеров AVR

версия 1.09 CodeVisionAVR + WinAVR

 

При разработке практически любого программного обеспечения для микроконтроллеров выясняется, что программа должно состоять из нескольких, сравнительно самостоятельных задач  с возможностью коммуникации этих задач между собой.

Т.е. существует потребность в общей управляющей программе типа операционной системы.

 mRTOS – общие сведения

mRTOS (micro Real-Time Operating System) является кооперативной ОС с приоритетным планированием. Причинами появления этой ОС таковы:

Малые и средние контроллеры AVR имеют небольшой объем внутреннего ОЗУ, поэтому вытесняющие (preemptive) ОС не подходят для этой цели, несмотря на их преимущества. Пожалуй, единственной,  достойной альтернативой является кооперативная ОС с приоритетным планированием. Вообще для того, чтобы использовать преимущества вытесняющих (preemptive) ОС микроконтроллер должен иметь минимум 4 кБайт ОЗУ. Из-за исходной ориентации на мелкие МК применяются упрощенные и облегченные решения что, позволило добиться сравнительно неплохого результата. Контекст каждой задачи использует всего лишь 3 байта. Используется очень простой механизм планирования (и вычисления приоритетов). В качестве языка разработки ОС выбран язык программирования С версии CodeVisionAVR с ассемблерными вставками. Хотя существует возможность портирования данной ОС на другую платформу – WinAVR или ICCAVR. WinAVR к тому же и бесплатен. Вопрос портирования будет рассмотрен ниже. Еще одной из причин разработки данной ОС было то, что после длительных поисков и попыток портирования  найденных ОС для компилятора CodeVisionAVR ни одна из них не увенчалась полным успехом. По мнению автора среда разработки CodeVisionAVR является самым удобным инструментом для разработки проектов небольшой и средней степени сложности. Т.е. для проектов, в которых как раз и используются малые и средние контроллеры AVR. Хотя проект средней сложности – это может быть и достаточно серьезный проект. Данная ОС используется в проекте, где существует сеть микроконтроллеров ATMega162, построенная на USART, контролирующая и  управляющая  40 разнообразными внешними устройствами, синтезом звуковых  сообщений и общей внешней FLASH памятью 20 Мбайт. С другой стороны данная ОС была использована в малом проекте на микроконтроллере AT90S2313 – в приложении инициировано 3 задачи (процесса). И в том и другом случае существенно легче стало обеспечивать модификацию, сопровождение и отладку программного обеспечения. Понятнее и прозрачнее стали тексты программ.

Внутренее устройство mRTOS

Рисунок 1

На рисунке 1 представлена блок-схема mRTOS, на которой можно увидеть что ОС функционально состоит из 3-х программных блоков.

Блок приоритетного переключения задач – набор функций и системных переменных, которые обеспечивают:

Блок обработки системных событий - набор функций и системных переменных, которые обеспечивают:

Блок сервиса системного времени - набор функций и системных переменных, которые обеспечивают:

 Применение mRTOS в приложениях

Для применения mRTOS следует скопировать файлы mrtos.c и mrtos.h в папку проекта и включить файл mrtos.c в состав проекта приложения. В файле mrtos.h определить:

Определить задачи (процессы) приложения – описано в пункте “Задачи (процессы) в mRTOS”.

Далее следует настроить системный таймер, что подробно описано в пункте “Нулевой таймер микроконтроллера Timer0”.

 В функции main приложения следует инициализировать mRTOS:

Init_mRTOS();

 Создать (зарегистрировать) задачи (процессы) в системе:

create_task(task1, 10, Active);

create_task(task2, 50, Active);

create_task(task3, 30, Active);

Выше приведен пример инициализации 3-х задач в приложении. В действительности количество, приоритет и статус инициализируемых задач зависит только от программиста.

 Передать управление планировщику задач:

Sheduler();

 При первом вхождении в планировщик задач управление передается предопределенной в mRTOS (в файле mrtos.c) системной задаче “холостого хода”  void idle(), которая имеет низкий приоритет и, по умолчанию, не выполняет никаких полезных действий. Но программист всегда может добавить в эту функцию какую-либо полезную работу.

Далее планирование и переключение задач будет происходить согласно алгоритму планировщика задач и зависеть от приоритета и статуса задач.

 Соглашение об использовании mRTOS

Эта ОС разрабатывалась для себя и для всех желающих ее использовать. Любой, изъявивший желание, может использовать и/или распространять ее совершенно бесплатно как в образовательных целях, так и в некоммерческих и коммерческих проектах. Единственное ограничение – копирайт, но это у нас никому не мешает. mRTOS поставляется «как есть» (“as is”), никаких гарантий, естественно, не предоставляется.

Загрузка mRTOS

В файле для загрузки помещены файлы mRTOS - mrtos.c и mrtos.h, а также файл документации в формате PDF и две папки с примерами для микроконтроллеров AT90S2313 и ATMega162 - mRTOS.rar

Порт mRTOS - WinAVR

Спасибо Олегу Самоткову за его работу по портированию mRTOS для компилятора AVR GCC(WinAVR).

Ссылка для загрузки - mrtosGCC.zip

 

При проектировании mRTOS были изучены и переработаны материалы по ОС scmRTOS, FreeRTOS, csRTOS и был выработан собственный подход для достижения минимального использования ресурсов с сохранением необходимых  функциональных возможностей.

Литература:

1.  Иртегов  Д.В.  Введение  в  операционные  системы. –  СПб.:  БХВ-

Петербург, 2002. – 624 с.: ил.

2.  Столлингс В. Операционные системы, 4-е издание.: Перев. с англ. – М:

Издательский дом «Вильямс», 2002. – 848 с.: ил.

3.  Гордеев А.В., Молчанов А. Ю. Системное программное обеспечение. –

СПб.: Питер, 2002. – 736 с.: ил.

4.  Олифер  Н.А.,  Олифер  В.Г.  Сетевые  операционные  системы. –  СПб.:

Питер, 2001. – 544 с.: ил.

5.  Таненбаум Э. Современные  операционные  системы.  2-е  изд. – СПб.:

Питер, 2002. – 1040 с.: ил.

6. Операционные системы. Учебное пособие . Рощин Алексей Васильевич.

7. Алгоритмы планирования процессорного времени. И.С. Гусев.

8. Embedded Multitasking with small microcontrollers. Keith E. Curtis

 

 


Copyright © 2007
Created by Veacheslav Movila E-mail: Web-design
Хостинг от uCoz