Vol-Alchevsk
Ucoz.net


Меню сайта
Реклама
вложение денег в акции
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

mRTOS. Кооперативная операционная система для МК AVR

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

mRTOS. Общие сведения [1…8]

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

необходимость ОС для малых и средних контроллеров AVR. Большинство проектов автора используют именно такой тип микроконтроллеров;

ОС для компилятора CodeVisionAVR.

Малые и средние контроллеры AVR имеют небольшой объем внутреннего ОЗУ, поэтому вытесняющие (preemptive) ОС не подходят для этой цели, несмотря на их преимущества. Пожалуй, единственной, достойной альтернативой является кооперативная ОС с приоритетным планированием. Вообще для того, чтобы использовать преимущества вытесняющих (preemptive) ОС микроконтроллер должен иметь минимум 4 кБайт ОЗУ. Из-за исходной ориентации на мелкие МК применяются упрощенные и облегченные решения что, позволило добиться сравнительно неплохого результата. Контекст каждой задачи использует всего лишь 3 байта. Используется очень простой механизм планирования (и вычисления приоритетов).

В качестве языка разработки ОС выбран язык программирования С версии CodeVisionAVR* с ассемблерными вставками. Хотя существует возможность портирования данной ОС на другую платформу – WinAVR или ICCAVR. WinAVR к тому же и бесплатен. Вопрос портирования будет рассмотрен ниже. Еще одной из причин разработки данной ОС было то, что после длительных поисков и попыток портирования найденных ОС для компилятора CodeVisionAVR ни одна из них не увенчалась полным успехом.

* Комментарий автора.

Среда разработки CodeVisionAVR является самым удобным инструментом для разработки проектов небольшой и средней степени сложности. Т.е. для проектов, в которых как раз и используются малые и средние контроллеры AVR. Хотя проект средней сложности – это может быть и достаточно серьезный проект.

Данная ОС используется в проекте, где существует сеть микроконтроллеров ATMega162, построенная на USART, контролирующая и управляющая 40 разнообразными внешними устройствами, синтезом звуковых сообщений и общей внешней FLASH памятью 20 Мбайт. С другой стороны данная ОС была использована в малом проекте на микроконтроллере AT90S2313 – в приложении инициировано 3 задачи (процесса). И в том и другом случае существенно легче стало обеспечивать модификацию, сопровождение и отладку программного обеспечения. Понятнее и прозрачнее стали тексты программ.

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

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

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

инициализацию задач (процессов) в системе;

управление приоритетом задач (процессов) в системе;

динамическое изменение статуса задачи (процесса);

переключение задач (процессов), согласно текущим приоритетам.

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

регистрацию системных событий;

установку и очистку системных событий;

получения состояния системного события.

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

подсчет тиков системного таймера;

получение системного времени (времени работы ОС) в виде количества тиков системного таймера.

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

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

количество пользовательских задач (блоков TCB) в строке #define APPTASKS N,

где N – это количество задач определяемых в данном приложении;

количество событий (блоков ECB) в строке #define MAXEVENTS N,

где N – это количество событий определяемых в данном приложении.

Определить задачи (процессы) приложения – описано в пункте «Задачи (процессы) в 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 были изучены и переработаны материалы по ОС scmRTOS, FreeRTOS, csRTOS и был выработан собственный подход для достижения минимального использования ресурсов с сохранением необходимых функциональных возможностей.

** Комментарий редакции.

Как правило, в подобные системы включают сторожевой таймер (Watchdog timer http://ru.wikipedia.org/wiki/Сторожевой_таймер). Ведь не исключено, что один из процессов зависнет (например, из-за ошибок во входных параметрах, аппаратном сбое при несоблюдении условий эксплуатации т.д.).

В файле для загрузки помещены файлы mRTOS: <mrtos.c> и <mrtos.h>, а также файл документации в формате PDF и две папки с примерами для микроконтроллеров AT90S2313 и ATMega162 [9, 10] или непосредственно в архиве с журналом.

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

Ресурсы

  • Иртегов Д.В. Введение в операционные системы. – СПб.: БХВ-Петербург, 2002. – 624 с.: ил.
  • Столлингс В. Операционные системы, 4-е издание.: Перев. с англ. – М: Издательский дом «Вильямс», 2002. – 848 с.: ил.
  • Гордеев А.В., Молчанов А. Ю. Системное программное обеспечение. – СПб.: Питер, 2002. – 736 с.: ил.
  • Олифер Н.А., Олифер В.Г. Сетевые операционные системы. – СПб.: Питер, 2001. – 544 с.: ил.
  • Таненбаум Э. Современные операционные системы. 2-е изд. – СПб.: Питер, 2002. – 1040 с.: ил.
  • Операционные системы. Учебное пособие . Рощин Алексей Васильевич.
  • Алгоритмы планирования процессорного времени. И.С. Гусев.
  • Embedded Multitasking with small microcontrollers. Keith E. Curtis
  • mRTOS порт CodeVision http://movila.site11.com/attachments/011_mRTOS.rar
  • mRTOS порт WinAVR http://movila.site11.com/attachments/011_mrtosGCC.zip
Вход на сайт
Реклама
Меню 2
Copyright MyCorp © 2025Бесплатный хостинг uCoz