====== Конфигурация OSAcfg.h ====== Файл OSAcfg.h для каждой программы должен быть свой, и его желательно держать в той же директории, где и сама программа. Этот файл автоматически включается файлом OSA.h и является настроечным (в нем определяется, где хранятся какие данные, сколько максимально может быть задач, семафоров, таймеров и пр.). Шаблон этого файла лежит в папке OSA\PROJECT. В самом простом случае этот файл может быть пустым, тогда будут приняты все настройки по умолчанию. <note important> Для упрощения создания/редактирования файла конфигурации можно воспользоваться утилитой **{{osa:osacfg_tool_setup.rar|OSAcfg_Tool}}** </note> ===== Системные константы ===== ^ Имя константы ^ Описание ^ |##OS_ENABLE_ALL## | Разрешить все | |##OS_ENABLE_CSEM## | Если определена эта константа, то в программу включается код по работе с счетными семафорами | |##OS_ENABLE_QUEUE## | Если определена эта константа, то в программу включается код по работе с очередями сообщений | |##OS_ENABLE_SQUEUE## | Если определена эта константа, то в программу включается код по работе с очередями коротких однобайтовых сообщений | |##OS_QUEUE_SQUEUE_IDENTICAL## | Если используются сразу и очереди сообщений и очереди коротких сообщений, и есть уверенность в том, что размерность указателя на сообщение (тип ##[[osa:ref:description:data_types#OST_MSG|OST_MSG]]##) и короткого соощения (тип ##[[osa:ref:description:data_types#OST_SMSG|OST_SMSG]]##) одинакова, то можно определить эту константу, чтобы для работы с обоими типами очередей выполнялась одними и теми же функциями. Особенно актуально для PIC10, PIC12 и PIC16. | |##OS_ENABLE_CRITICAL_SECTION## | Если определена, то в программу включаются функции входа в критическую секцию и выхода из нее | ~~UP~~ ===== Управление приоритетами ===== ^ Имя константы ^ Допустимые значения ^ Описание ^ |##OS_PRIORITY_LEVEL##| ##OS_PRIORITY_NORMAL## | (defaul) Обычный приоритетный режим с последовательной проверкой задач на готовность в порядке их создания | | | ##OS_PRIORITY_DISABLE## | Принудительно устанавливает всем задачам высший приоритет. Можно использовать для ускорения работы планировщика, если приоритетность не важна | | | ##OS_PRIORITY_EXTENDED## | Расширенный приоритетный режим, который распределяет ресурсы ядра микроконтроллера между задачами пропорционально весам их приоритетов | | <color lightblue>##OS_DISABLE_PRIORITY##</color>| | (old style consant) То же, что и OS_PRIORITY_DISABLE | ~~UP~~ ===== Управление таймерами ===== ^ Имя константы ^ Описание ^ |##OS_ENABLE_TTIMERS## | Если эта константа определена, то в программу будут включены функции по определению задержек в задачах и таймеры в ##[[osa:ref:description:data_types#OST_TCB|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 будет оптимизирован по размеру (иначе - по скорости) | ~~UP~~ ===== Сервисы в прерываниях ===== ^ Имя константы ^ Описание ^ |##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## | Если определена, то включает все выше перечисленные константы | ~~UP~~ ===== Содержание данных ===== ^ Имя константы ^ Описание ^ Требуется памяти ^ |##OS_TASKS## |Количество задач, которые одновременно могут быть активны|На каждую задачу:\\ Для **PIC12** - по 2 байта.\\ Для **PIC16** - по 3 байта.\\ Для **PIC18** - по 4 байта.\\ Для **PIC24** и **dsPIC** - по 20 байт.\\ Для **AVR** - по 5 байт.\\ Если в программе используются таймеры (определена константа ##OS_ENABLE_TTIMERS##), то а каждую задачу добавляется ##[[osa:ref:appendix:configuration#Типы данных|OS_TTIMER_SIZE]]## байт.| |##OS_BSEMS## |Количество бинарных семафоров |**Для 8-разрядных**: По 1 байту на каждую неполную восьмерку семафоров. **Для 16-разрядных**: По 1 слову, на каждые 16 семафоров.| |<color lightblue>OS_TIMERS8</color> (устаревшая) |Количество пользовательских 8-разрядных таймеров |На каждый по 1 байту| |<color lightblue>OS_TIMERS16</color> (устаревшая) |Количество пользовательских 16-разрядных таймеров |На каждый по 2 байту| |<color lightblue>OS_TIMERS24</color> (устаревшая) |Количество пользовательских 24-разрядных таймеров |На каждый по 2 байту (в этих таймерах нет младшего байта)| |<color lightblue>OS_TIMERS32</color> (устаревшая) |Количество пользовательских 32-разрядных таймеров |На каждый по 4 байта| ~~UP~~ ===== Типы данных ===== ^ Имя константы ^ Значение по умолчанию ^ Описание ^ |##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. ~~UP~~ ===== Размещение данных для 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)| |<color lightblue>OS_BANK_TIMERS</color>* |OS_BANK_OS |Для статических таймеров старрого типа| |<color lightblue>OS_BANK_TIMERS8</color>* (устаревшая) |OS_BANK_TIMERS |Для 8-разрядных статических таймеров| |<color lightblue>OS_BANK_TIMERS16</color>* (устаревшая) |OS_BANK_TIMERS |Для 16-разрядных статических таймеров| |<color lightblue>OS_BANK_TIMERS24</color>* (устаревшая) |OS_BANK_TIMERS |Для 24-разрядных статических таймеров| |<color lightblue>OS_BANK_TIMERS32</color>* (устаревшая) |OS_BANK_TIMERS |Для 32-разрядных статических таймеров| |<color lightblue>OS_BANK_TIMEOUTS</color>* (устаревшая) |OS_BANK_TIMERS |Для битовых полей - флагов переполнения (таймаутов) пользовательских статических таймеров.| * - игнорируется в CCS и mikroC PRO, а также для контроллеров AVR ~~UP~~