Available Languages?:

Конфигурация OSAcfg.h

Файл OSAcfg.h для каждой программы должен быть свой, и его желательно держать в той же директории, где и сама программа. Этот файл автоматически включается файлом OSA.h и является настроечным (в нем определяется, где хранятся какие данные, сколько максимально может быть задач, семафоров, таймеров и пр.). Шаблон этого файла лежит в папке OSA\PROJECT.

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

Для упрощения создания/редактирования файла конфигурации можно воспользоваться утилитой OSAcfg_Tool

Системные константы

Имя константы Описание
OS_ENABLE_ALL Разрешить все
OS_ENABLE_CSEM Если определена эта константа, то в программу включается код по работе с счетными семафорами
OS_ENABLE_QUEUE Если определена эта константа, то в программу включается код по работе с очередями сообщений
OS_ENABLE_SQUEUE Если определена эта константа, то в программу включается код по работе с очередями коротких однобайтовых сообщений
OS_QUEUE_SQUEUE_IDENTICAL Если используются сразу и очереди сообщений и очереди коротких сообщений, и есть уверенность в том, что размерность указателя на сообщение (тип OST_MSG) и короткого соощения (тип OST_SMSG) одинакова, то можно определить эту константу, чтобы для работы с обоими типами очередей выполнялась одними и теми же функциями. Особенно актуально для PIC10, PIC12 и PIC16.
OS_ENABLE_CRITICAL_SECTION Если определена, то в программу включаются функции входа в критическую секцию и выхода из нее

Управление приоритетами

Имя константы Допустимые значения Описание
OS_PRIORITY_LEVEL OS_PRIORITY_NORMAL (defaul) Обычный приоритетный режим с последовательной проверкой задач на готовность в порядке их создания
OS_PRIORITY_DISABLE Принудительно устанавливает всем задачам высший приоритет. Можно использовать для ускорения работы планировщика, если приоритетность не важна
OS_PRIORITY_EXTENDED Расширенный приоритетный режим, который распределяет ресурсы ядра микроконтроллера между задачами пропорционально весам их приоритетов
OS_DISABLE_PRIORITY (old style consant) То же, что и OS_PRIORITY_DISABLE

Управление таймерами

Имя константы Описание
OS_ENABLE_TTIMERS Если эта константа определена, то в программу будут включены функции по определению задержек в задачах и таймеры в OST_TCB. Если в программе не планируется использовать OS_Delay или ожидание событий с таймаутами, то эту константу можно не определять (тогда получится меньший код и освободится RAM).
OS_ENABLE_DTIMERS Если определена, то в программе можно использовать динамические таймеры
OS_ENABLE_QTIMERS Если определена, то в программе можно использовать очкркдь таймеров
OS_STIMERS Количество статических таймеров. Если определена, то создается массив статических таймеров такой размерности
OS_STIMERS_ENABLE_ALLOCATION Если определена, то в код включаются функции по назначению статических таймеров в ходе выполнения программы
OS_STIMERS_OPTIMIZE_SPEED Если определена, то код по управлению статическими таймерами в OS_Timer будет оптимизирован по размеру (иначе - по скорости)
OS_TTIMERS_OPTIMIZE_SPEED Если определена, то код по управлению таймерами задач в OS_Timer будет оптимизирован по размеру (иначе - по скорости)

Сервисы в прерываниях

Имя константы Описание
OS_ENABLE_INT_BSEM
OS_ENABLE_INT_CSEM Разрешает отправлять счетные семафоры из прерываний
OS_ENABLE_INT_FLAG Разрешает работать с флагами внутри прерывания
OS_ENABLE_INT_MSG Разрешает отправку сообщений из прерываний
OS_ENABLE_INT_SMSG Разрешает отправку коротких сообений из прерываний
OS_ENABLE_INT_QUEUE Разрешает отправку сообщений и коротких сообщений через очередь из прерываний
OS_ENABLE_INT_ALL Если определена, то включает все выше перечисленные константы

Содержание данных

Имя константы Описание Требуется памяти
OS_TASKS Количество задач, которые одновременно могут быть активныНа каждую задачу:
Для PIC12 - по 2 байта.
Для PIC16 - по 3 байта.
Для PIC18 - по 4 байта.
Для PIC24 и dsPIC - по 20 байт.
Для AVR - по 5 байт.
Если в программе используются таймеры (определена константа OS_ENABLE_TTIMERS), то а каждую задачу добавляется OS_TTIMER_SIZE байт.
OS_BSEMS Количество бинарных семафоров Для 8-разрядных: По 1 байту на каждую неполную восьмерку семафоров. Для 16-разрядных: По 1 слову, на каждые 16 семафоров.
OS_TIMERS8 (устаревшая) Количество пользовательских 8-разрядных таймеров На каждый по 1 байту
OS_TIMERS16 (устаревшая) Количество пользовательских 16-разрядных таймеров На каждый по 2 байту
OS_TIMERS24 (устаревшая) Количество пользовательских 24-разрядных таймеров На каждый по 2 байту (в этих таймерах нет младшего байта)
OS_TIMERS32 (устаревшая) Количество пользовательских 32-разрядных таймеров На каждый по 4 байта

Типы данных

Имя константы Значение по умолчанию Описание
OS_TIMER_SIZE 2 Количество байт, занимаемых системным таймером. Может быть = 1, 2 или 4.
OS_STIMER_SIZE OS_TIMER_SIZE Количество байт, занимаемых статическим таймером. Может быть = 1, 2 или 4.
OS_TTIMER_SIZE OS_TIMER_SIZE Количество байт, занимаемых таймером задачи. Может быть = 1, 2 или 4.
OS_QTIMER_SIZE OS_TIMER_SIZE Количество байт, занимаемых таймерами в очереди таймеров. Может быть = 1, 2 или 4.
OS_DTIMER_SIZE OS_TIMER_SIZE Количество байт, занимаемых динамическим таймером. Может быть = 1, 2 или 4.
OS_CSEM_SIZE 1 Количество байт, выделяемое под каждый счетный семафор. Определяет, в каких пределах может меняться счетный семафор. Может быть = 1, 2 или 4
OS_SMSG_TYPE* unsigned char Тип коротких сообщений, которыми обмениваются задачи.
OS_MSG_TYPE* void * Тип сообщений для MSG и QUEUE.

* - эти типы нельзя переопределять при использовании PIC12.

Размещение данных для PIC10, PIC12, PIC16 и PIC18

Константы OS_BANK_xxx могут принимать значения:

  • Для PIC10, PIC12, PIC16: 0, 1, 2 или 3 - выбор банка bank0, bank1, bank2, bank3, соотвт.
  • Для PIC18: 0, не 0 - accsess и не access, соотв.
  • Для PIC24: 0, не 0 - near и не near, соотв.
  • Для STM8: 0, не 0 - near и не near, соотв.
Имя константы Значение по умолчанию Описание
OS_BANK_OS* 0 Определяет, где будут храниться все переменные системы (если для них не указаны другие).
OS_BANK_BSEMS* OS_BANK_OS Для двоичных семафоров.
OS_BANK_TASKS* OS_BANK_OS Банк, в котором будут размещены дескрипторы задач
OS_BANK_STIMERS* OS_BANK_TIMERS Для статических таймеров
OS_ADDRESS_TASK - Для mikroC PRO for PIC16: Для размещения дескрипторов задач по определенному адресу памяти (например в 0x120 (для bank2) или 0x190 (для bank3)
OS_BANK_TIMERS* OS_BANK_OS Для статических таймеров старрого типа
OS_BANK_TIMERS8* (устаревшая) OS_BANK_TIMERS Для 8-разрядных статических таймеров
OS_BANK_TIMERS16* (устаревшая) OS_BANK_TIMERS Для 16-разрядных статических таймеров
OS_BANK_TIMERS24* (устаревшая) OS_BANK_TIMERS Для 24-разрядных статических таймеров
OS_BANK_TIMERS32* (устаревшая) OS_BANK_TIMERS Для 32-разрядных статических таймеров
OS_BANK_TIMEOUTS* (устаревшая) OS_BANK_TIMERS Для битовых полей - флагов переполнения (таймаутов) пользовательских статических таймеров.

* - игнорируется в CCS и mikroC PRO, а также для контроллеров AVR

 
osa/ref/appendix/configuration.txt · Последние изменения: 07.10.2010 13:54 (внешнее изменение)
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki