СОВРЕМЕННАЯ ЭЛЕКТРОНИКА 2011-1
ОСРВ ДЛЯ МИКРОКОНТРОЛЛЕРА Все начинающие программисты зна комы со структурой программы для микроконтроллера, имеющей основ ной бесконечный цикл (loop) в теле функции main и выполняющей в ней все действия. При этом прерывания выполняются на переднем плане, а суперцикл – в фоновом режиме. Такая структура удобна для выполнения очень небольшого количества задач, и при необходимости увеличения чис ла задач программа становится до вольно громоздкой и трудночитаемой. Также начинают возникать проблемы взаимодействия и синхронизации между задачами и процедурами об работки прерываний. Поэтому на сегодняшний день всё большую по пулярность приобретает применение операционных систем реального вре мени (ОСРВ) в микроконтроллерах. Такие ОС должны быть компактными, чтобы работать в микроконтроллере с объёмом программной памяти до нескольких килобайт и объёмом ОЗУ от нескольких сотен байт. Использова ние ОСРВ позволяет использовать больше задач, программа становится легко расширяемой, её легче читать и отлаживать. ОСРВ ДЛЯ МИКРОКОНТРОЛЛЕРОВ M ICROCHIP Главная задача планировщика в ОСРВ – обеспечить, чтобы текущая вы полняемая задача имела наивысший приоритет из всех задач, готовых к вы полнению. В кооперативных ОСРВ программист должен явно переклю чать контекст внутри своих задач. Вследствие этого «зависание» одной из задач сказывается на системе в целом. При вытесняющемпланировании опе рационная система использует свой ПРОГРАММИРОВАНИЕ 56 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2011 Использование алгоритма планирования RMS в микроконтроллерах Николай Баландин, Александр Крапивный (Москва) В статье рассмотрены различные подходы к написанию многозадачных приложений для микроконтроллеров, в том числе расширение жёсткого реального времени RMEX для микроконтроллеров Microchip PIC18, которое использует алгоритм монотонной частоты для планирования задач и обеспечивает гарантированное время отклика. таймер и прерывание, т.е. «зависание» какой либо задачи не должно повре дить работе остальных задач, если они независимы друг от друга и задача с высшим приоритетом не попала в бес конечный цикл. Приоритетный планировщик за дач требует наличия в процессоре программно доступного стека задач для его сохранения при переключе нии. Такой планировщик трудноре ализуем и неэффективен в 8 битных микроконтроллерах, которые имеют программно доступный стек (напри мер, Atmel), а на микроконтроллерах Microchip PIC16, имеющих только аппаратный стек (инструкции call return ), вообще нельзя реализовать (аппаратно) сохранение контекста задачи. Наиболее известными ОС реально го времени для микроконтроллеров Microchip PIC16 являются Salvo [1], OSA [2] и PICos18. Salvo – кооперативная многозадач ная ОСРВ с поддержкой приоритетов, семафоров, очередей сообщений и функций таймеров. Salvo не использу ет стек общего назначения (на уровне инструкций PUSH/POP ). Переключе ние контекста производится только самимпользователеми на уровне зада чи. Переключение задачи из подпро граммы внутри задачи приведёт к не предсказуемым последствиям. OSA – это кооперативная многоза дачная ОСРВ для микроконтроллеров. Задачами в OSA являются обычные функции. Телофункции должно содер жать бесконечный цикл, внутри кото рого должен быть хотя бы один вызов сервиса переключения задач (иначе остальные задачи не получат управле ния). PICos18 – вытесняющая, основанная на приоритетах ОСРВ для микроконт роллеров Microchip PIC18, использую щая стандарт OSEK и стек для сохра нения контекстов задач. Такая ОСРВ безопаснее в плане переключения за дач, но даже здесь существует вероят ность того, что попавшая в бесконеч ный цикл задача с высшим приорите том заблокирует выполнение всех остальных задач в системе. Таким образом, многозадачные при ложения для микроконтроллера, рабо тающие в режиме жёсткого реального времени, требуют наличия планиров щика задач, минимального по объёму кода имаксимального по быстродейст вию, устойчивого к зависанию задачи и гарантирующего предсказуемое вре мя отклика даже при наивысшей за грузке системы. Т ЕОРИЯ АЛГОРИТМА RMS Алгоритм RMS (Rate Monotonic Sche duling – планирование монотонной частоты) разработан в 1973 г. [4] для применения в системах жёсткого ре ального времени. Алгоритм использу ет статические приоритеты для задач (static priorities), которые назначаются каждой задаче на этапе компиляции приложения. RMS позволяет опреде лить, может ли вообще управляться планировщиком данный набор задач, т.е. каждая задача из набора будет вы полнена в свой срок (deadline) даже при наихудших условиях. Таким обра зом, система будет иметь предсказуе мое поведение. Данный алгоритм при меняется в таких операционных систе мах жёсткого реального времени, как RTEMS и Deos. Каждая задача в системе имеет три характеристики: время выполнения (execution time), период (period) и ко нечный срок (deadline). Период зада чи – интервал времени между двумя её успешными выполнениями. Приори тет назначается каждой задаче в зави симости от длины её периода: чем ко роче период, тем выше приоритет за дачи. Время выполнения – время, в течение которого задача получает доступ к процессору за один период. Конечный срок – время, к которому за дача должна быть выполнена обяза тельно. Если задача не выполняется к конечному сроку, то планировщик дол © СТА-ПРЕСС
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy