Available Languages?:

OSA : Введение

Что такое OSA

OSA - кооперативная многозадачная операционная система реального времени (ОСРВ) для микроконтроллеров фирмы Microchip серий PIC10, PIC12, PIC16, PIC18, PIC24 и dsPIC, AVR 8-bit фирмы Atmel, а также микроконтроллеров STM8 фирмы STMicroelectronics.

ОСРВ позволяет программисту сосредоточить свои усилия на решении конкретных задач (алгоритмических, математических и т.п.), не отвлекаясь на задачи второстепенные. Она берет на себя:

  • переключение между параллельными процессами (например, опрос клавиатуры, вывод информации на экран, управление реле и.т.п.);
  • отсчет таймаутов, выдержку задержек;
  • выбор готовой к выполнению задачи с наивысшим приоритетом и передача ей управления;
  • обмен данными между задачами (с помощью семафоров, сообщений и пр.).

Задачами в ОСРВ OSA являются обычные функции. Тело функции должно содержать бесконечный цикл, внутри которого должен быть хотя бы один вызов сервиса переключения задач (иначе остальные задачи не получат управления).

Поддерживаемые компиляторы

PIC

PIC10/12 PIC16/12 PIC16F1xxx PIC18 PIC24/dsPIC
HT-PICC STD
HT-PICC PRO
Microchip C
mikroC PRO
CCS PICC

AVR

AVR 8-bit
WinAVR
IAR
Code Vision AVR

STM8

STM8
Cosmic
IAR
Raisonance

Ограничения

HT-PICC, HT-PICC18

  • При входе в прерывание и при выходе из него нужно использовать сервисы OS_EnterInt() и OS_LeaveInt(). Первый вставляется в самом начале прерывания, сразу после описания переменных функции прерывания, а второй - в самом конце перед закрывающей скобкой "}". Например:
void interrupt int_routine (void)
{
    char  var1, var2;
    int   var3;
    OS_EnterInt();
    ...                // Здесь делается проверка флагов прерываний
    ...                // и обработка
    OS_LeaveInt();
}

Дело в том, что HT-PICC не всегда сохраняет значение регистра FSR (FSR0 для PICC18), который активно ипсользуется самой системой.

Microchip C18

  • нельзя включать оптимизацию procedural abstraction
  • нельзя пользоваться Stack model: Multi bank

Microchip C30

  • Для PIC24 и dsPIC нельзя включать оптимизацию -mpa (procedural abstraction)

12-разрядные PIC'и

  • Для 12-разрядных контроллеров накладывается ограничение на размерность сообшений и счетных семафоров. И короткие сообщения, и указатели на сообщения, и счетные семафоры могут иметь размерность только в 1 байт.

microC PRO для PIC16

  • При работе с PIC18 версия mikroC должна быть не ниже 2.50 PRO
  • При работе с PIC12 и PIC16 версия mikroC должна быть не ниже 3.00 PRO
  • Нужно следить за тем, чтобы динамические таймеры, очереди сообщений и сами сообщения не попадали в bank2 и bank3. Если компилятор их все-таки разместит там, то нужно предпринять меры к тому, чтобы он перенес их в нижнюю область памяти (переставить определения переменных местами). Пока что это ограничение обойти не удается, ведутся переговоры с командой mikroE.

CCS PICC

  • В версии 4.104 появилась ошибка, которая не позволяет собирать программу с OSA. Пользуйтесь младшими версиями (проверены: 4.023, 4.069, 4.084, 4.099, 4.102, 4.108, 4.109, 4.110)

IAR (AVR and STM8)

  • Работает только в режиме C (не C++).
  • Оптимизация cross-call должна быть отключена.

WinAVR

  • При работе из-под AVRStudio файлы OSA и файлы проекта должны находиться на одном логическом диске.

STM8

  • Работает только с контроллерами с ROM 64K и меньше

Благодарности

Выражаю благодарность всем, кто принимал участие в поисках и исправлении багов, не ленился копаться в кодах и тратил свое время на дебаггер. Особую благодарность Вадиму Франку и Д. Иванову, принимавшим самое активное участие и проявившим терпение и настойчивость.

Также выражаю благодарность Alex'у B., любезно предоставившему свой сайт для документации и оказавшему помощь в ее размещении здесь.

 
osa/ref/introduction/intro.txt · Последние изменения: 12.03.2012 12:42 От osa_chief
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki