Добавить в корзинуПозвонить
Найти в Дзене

Оценка задержки обработки прерываний в ОСРВ FX-RTOS

Авторы: Рыбкин Сергей, Захаров Арсений, Черкасов Михаил, Сушков Александр Когда речь заходит об операционных системах реального времени (ОСРВ), наша команда часто сталкивается с вопросом: «А какая задержка обработки прерываний?» Скажем сразу – время реакции на событие в ОСРВ – это не единственная и не самая важная характеристика операционных систем. Тем не менее мы попробуем разобраться со столь частым вопросом путём проведения эксперимента на отечественном оборудовании. В целях проверки мы остановились на отечественном микроконтроллере К1986ВЕ92FI (маркировка на корпусе MDR1211FI), выпускаемом АО «ПКК Миландр». Данный микроконтроллер применяется в различных платформах и на отладочных платах российских разработчиков. Наша команда выбрала плату MDR32 Miluino (рис. 1), так как она обеспечивает основные технические характеристики, необходимые для проведения эксперимента. Для обеспечения быстрого старта работы с ОСРВ на микроконтроллерах принято решение использовать конфигуратор для встраи
Оглавление

Авторы: Рыбкин Сергей, Захаров Арсений, Черкасов Михаил, Сушков Александр

Введение

Когда речь заходит об операционных системах реального времени (ОСРВ), наша команда часто сталкивается с вопросом: «А какая задержка обработки прерываний?» Скажем сразу – время реакции на событие в ОСРВ – это не единственная и не самая важная характеристика операционных систем. Тем не менее мы попробуем разобраться со столь частым вопросом путём проведения эксперимента на отечественном оборудовании.

Стенд для проведения эксперимента

В целях проверки мы остановились на отечественном микроконтроллере К1986ВЕ92FI (маркировка на корпусе MDR1211FI), выпускаемом АО «ПКК Миландр». Данный микроконтроллер применяется в различных платформах и на отладочных платах российских разработчиков. Наша команда выбрала плату MDR32 Miluino (рис. 1), так как она обеспечивает основные технические характеристики, необходимые для проведения эксперимента.

Рис. 1. Отладочная плата MDR32 Miluino
Рис. 1. Отладочная плата MDR32 Miluino

Для обеспечения быстрого старта работы с ОСРВ на микроконтроллерах принято решение использовать конфигуратор для встраиваемых систем FX-Designer и ОСРВ FXRTOS.

Один из таймеров с ШИМ-выходом выберем в качестве источника прерываний. В целях оценки задержки вызова обработчика прерывания будем в нём формировать сигнал на другой свободный вывод. Для измерения задержки используем осциллограф. Сразу отметим, что обращение к периферии микроконтроллера из прерывания не совсем корректно, так как это может вступить в конфликт с другими операциями обращения к тем же периферийным модулям в основной программе. Следует отметить, что такая ситуация может привести к непредсказуемому поведению устройства в целом. Но в данном случае мы это учитываем и предполагаем, что обращение из основной программы к одному и тому же периферийному модулю микроконтроллера исключено.

Настройка периферии микроконтроллера

В целях выполнения эксперимента проведём ряд настроек микроконтроллера и платы MDR32 Miluino в конфигураторе FX-Designer.

Для генерации выходного сигнала используем таймер TMR3, он же в нашем случае будет являться источником прерываний. В конфигураторе включаем таймер «MDR_TMR3», и в его настройках включаем для канала № 3 режим работы «ШИМ В» – ШИМ с прямым выходом на вывод микроконтроллера, в данном случае автоматически назначается вывод PB5 (рис. 2).

Рис. 2. Настройка таймера TMR3 в FX-Designer
Рис. 2. Настройка таймера TMR3 в FX-Designer

Частоту тактирования ядра микроконтроллера поднимаем до максимальной – 80 МГц. Для этого на вкладке «Тактирование» (рис. 3) указываем частоту внешнего кварцевого резонатора и переключаем мультиплексоры CPU_C1_SEL и CPU_C2_SEL так, чтобы частота с выхода внешнего генератора HSE прошла через PLL, в котором указываем множитель x5. После этого переключаем мультиплексор HCLK_SEL на PLL, чтобы он использовался как источник тактирования для HCLK.

Рис. 3. Графическое представление схемы тактирования микроконтроллера
Рис. 3. Графическое представление схемы тактирования микроконтроллера

Назначенные ранее выводы микроконтроллера отображаются на разъёме XP2 отладочной платы MDR32 Miluino (рис. 4): выход таймера (вывод PB5) и выход сигнала INT_WORK (вывод PB6).

Рис. 4. Визуализация расположения разъёма на отладочной плате и назначение его выводов
Рис. 4. Визуализация расположения разъёма на отладочной плате и назначение его выводов

После генерации исходного кода проекта добавляем код в обработчик прерывания. В начале обработчика прерывания выставляем «1» на вывод INT_WORK, после сбрасываем флаг прерывания, чтобы избежать повторного вызова, и выставляем «0» на вывод INT_WORK (рис. 5).

Рис. 5. Исходный код обработчика прерывания таймера TIM3
Рис. 5. Исходный код обработчика прерывания таймера TIM3

После этого подключаем осциллограф к выводам микроконтроллера PB5 и PB6. На выводе PB5 наблюдаем периодический сигнал запроса на прерывание. На выводе INT_WORK (PB6) наблюдаем короткие импульсы, передний фронт которых означает начало выполнения пользовательского кода в обработчике прерывания. Далее измерим задержки между прерыванием и началом выполнения пользовательского кода в самом прерывании.

Результаты измерений

Вариант № 1 – проверка задержки прерывания без ОСРВ (рис. 6)

Рис. 6. Осциллограмма задержки обработки прерывания без ОСРВ
Рис. 6. Осциллограмма задержки обработки прерывания без ОСРВ

Осциллограмма в режиме накопления – захватывается большое количество сигналов для визуализации возможного джиттера. Синий график – источник прерывания, по нему включена синхронизация захвата сигнала. Красный график – сигнал INT_WORK.

На основании полученного графика определяем минимальную и максимальную задержки обработки прерывания: 1,029 мкс и 1,13 мкс соответственно.

Вариант № 2 – подключаем ОСРВ FX-RTOS для проверки задержки (рис. 7)

Рис. 7. Настройка ОСРВ FX-RTOS в интерфейсе конфигуратора FX-Designer
Рис. 7. Настройка ОСРВ FX-RTOS в интерфейсе конфигуратора FX-Designer

Проводим повторную генерацию исходного кода проекта и проверяем изменения в задержке обработки прерывания (рис. 8).

Рис. 8. Осциллограмма задержки обработки прерывания под управлением ОСРВ
Рис. 8. Осциллограмма задержки обработки прерывания под управлением ОСРВ

При работе прерываний под управлением ОСРВ добавилась небольшая задержка. Минимальная задержка составляет 1,844 мкс, а максимальная – 1,875 мкс. На основании выше­указанного можно сделать следующий предварительный вывод: применение ОСРВ может добавить задержку обработки прерываний 0,8 мкс относительно задержки без ОСРВ.

Если в прерывании не используются функции ОСРВ, то его можно обрабатывать, как и в варианте № 1. Но в этом случае прерывание может происходить на стеке любых потоков, что необходимо учитывать при разработке встраиваемого программного обеспечения.

Заключение

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

© СТА-ПРЕСС, 2026

Статья была опубликована в СЭ 3/2026
Больше интересного – на медиапортале
https://www.cta.ru/