СОВРЕМЕННАЯ ЭЛЕКТРОНИКА 2011-1

ПРОГРАММИРОВАНИЕ дет сгенерировано при его перепол нении с 0xFF в 0x00, у 16 битного – при переполнении с 0xFFFF в 0x0000. Любой таймер, имеющий регистр пе риода, может генерировать прерыва ние при совпадении его значения со значением регистра периода, чтобы при его использовании получить бо лее точное значение кванта времени для задачи. При использовании таймера 0 без предделителя в 16 битном режиме прерывание будет генерироваться примерно раз в 65 535/10 000 000 = = 6,5 мс. При использовании тайме ра 0 в 8 битном режиме с предделите лем 1 : 64 прерывание будет наступать примерно раз в 1,6 мс. Для получения кратного 10 значения кванта времени, например, 1 мс, можно использовать таймер 2 в режиме сравнения с регист ромпериода PR2 = 39, предделителеми постделителем, установленными в со отношение1 : 16. И СПОЛЬЗОВАНИЕ КООПЕРАТИВНОЙ ОС КАК ЗАДАЧИ МЯГКОГО ВРЕМЕНИ В RMEX Расширение RMEX представляет со бой микроядро, выполняющее функ ции многозадачности и вытеснения задач. В качестве задачи, получающей управление, когда не активна ни одна из задач жёсткого реального време ни, можно использовать ядро коопе ративной ОС. При этом программист освобождается от написания коопе ративного планировщика и других полезных функций, реализованных в кооперативных ОС. При таком под ходе кооперативные задачи сами об рабатывают прерывания, не исполь зуемые планировщиком RMEX или его задачами, и на кооперативнуюОС накладываются следующие ограни чения: ● кооперативная ОС не может блоки ровать прерывание, используемое системным таймером, или прерыва ния, используемые задачамижёстко го реального времени. Кооператив ная ОС не должна предохранять себя от вытеснения задачами жёсткого времени; ● ядро RMEX и его задачи используют высокий приоритет прерываний, задачикооперативногоядра– низкий приоритет, таким образом, процеду ры обработки прерываний коопера тивных задач также будут вытеснять ся прерываниями и задачами RMEX; ● при большой загруженности систе мы задачами монотонной частоты будет наблюдаться существенное запаздывание в работе кооператив ной ОС. В качестве примера использования кооперативнойОС возьмемОСРВOSA, которая обеспечивает переключение задач, отсчёт времени ожидания, вы бор готовой к управлению задачи с на ивысшим приоритетом и передачу ей управления, а также функции синхро низации задач (очереди сообщений, семафоры). В начале функции main выполняется вызов функции OS_Init() для инициа лизации OSA, инициализация всех данных программыпользователя имо дулеймикроконтроллера, создание ко оперативных задач для OSA, после чего устанавливается прерывание для сис темного таймера, освобождается место в стеке для фоновой задачи и происхо дит переключение на ядро RMEX. Сле дующей командой после передачи управления ядру RMEX и команд воз врата по стеку является вызов функ ции OS_Run() , т.е. планировщика OSA, который получит управление сразу же, как только ни одна из RMEX задач не останется активной. Последователь ность вызова функций приведена ниже: // инициализация OSA OS_Init() ; // инициализация данных … // создание задач для OSA OS_Task_Create(0, Task_1); OS_Task_Create(0, Task_2); // инициализация системного тай мера RMEX_Start_Timer(); // освобождение места в стеке и вызов ядра RMEX RMEX_Start_Shed(); // передача управления ядру OSA OS_Run(); З АКЛЮЧЕНИЕ Алгоритмы планирования задач эволюционируют от простых (супер цикл, кооперативная многозадач ность) к сложным (вытесняющая многозадачность, монотонная час тота, монотонная частота с коопера тивной многозадачностью и нерегу лярными задачами), использующим математические модели. Цель алго ритмов – гарантировать время реак ции на события, являющиеся критич ными для данного приложения. Для небольших приложений подойдёт и суперцикл; если требуется их даль нейшее расширение, то подойдёт ко оперативная ОСРВ OSA или Salvo. Для приложений жёсткого реального вре мени удобно использовать расшире ния RMEX, позволяющее интегриро вать уже написанные приложения для OSA или Salvo. Выбор – за програм мистом. Л ИТЕРАТУРА 1. Salvo RTOS User’s Manual, v. 3.2.2. 2. OSA, http://wiki.pic24.ru/doku.php/osa/ref/ /intro. 3. MPLAB C18 C Compiler User’s Guide. 4. Liu C.L., Layland J.W. Scheduling Algorithms for Multiprogramming in a Hard Real Time Environment. J. of the Association of Com puting Machinery. January 1973. 5. Баландин Н., Крапивный А. Отладка прило жений и настройка параметров конфигу рации операционной системы реального времени RTEMS. Современная электрони ка. 2010. № 5. 6. Microchip PIC18F2550 Data Sheet. 59 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2011 Реклама © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy