OPERATING SYSTEM FOR MICROCONTROLLER WITH USER PERMISSION SUPPORT

Research article
Issue: № 7 (38), 2015
Published:
2015/08/15
PDF

Устюгов В.А.1, Устюгова К.С.2, Блинов З.Н.3

1Кандидат физико-математических наук, 2Магистрант, 3Магистрант, Сыктывкарский государственный университет имени Питирима Сорокина

ОПЕРАЦИОННАЯ СИСТЕМА ДЛЯ МИКРОКОНТРОЛЛЕРОВ С ПОДДЕРЖКОЙ ПРАВ ПОЛЬЗОВАТЕЛЕЙ

Аннотация

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

Ключевые слова: микроконтроллеры, операционная система, права пользователя.

Ustyugov V.A.1, Ustyugova K.S.2, Blinov Z.N.3

1PhD in Physics and mathematics, 2Candidate for a master’s degree, 3Candidate for a master’s degree, Syktyvkar State University

OPERATING SYSTEM FOR MICROCONTROLLER WITH USER PERMISSION SUPPORT

Abstract

This paper observes the question about necessary usage of real time operating systems for designing of integrated programs manipulating microcontrollers. The developing OS structure and actual modules realization details are described. Concept of user permissions in context of microcontroller programs is defined.

Keywords: microcontrollers, operation system, user permissions.

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

Эти проблемы могут быть решены путем применения специальных систем управления задачами для микроконтроллеров - операционных систем реального времени. ОС требуют от микроконтроллера существенно больших вычислительных возможностей, но позволяют строить управляющие программы с высокой степенью структурированности, предсказуемости, эффективности [1].

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

В данной работе описывается операционная система реального времени, разрабатываемая авторами.

Схема строения операционной системы показана на рис. 1. Можно видеть, что ОС имеет три слоя (уровня):

  • уровень пользователя, в пределах которого выполняются пользовательские процессы;
  • уровень системы, на котором функционируют основные модули управления ресурсами микроконтроллера (памятью, процессорным временем), а также модули для управления запуском и приостановкой процессов и их взаимодействия;
  • аппаратно-зависимый уровень — компактный слой, содержащий низкоуровневые процедуры, обрабатывающие прерывания таймеров, непосредственно совершающие переключение контекстов.

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

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

По прерыванию от таймера происходит выполнение процедуры планировщика. При этом в оперативной памяти сохраняется текущее значение счетчика команд и содержимое используемых регистров общего назначения. Общее количество работающих процессов в системе ограничено, максимальное число составляет 64. Это связано с ограниченностью ресурса оперативной памяти для хранения состояния приостановленных процессов.

11-08-2015 12-02-55

Рис. 1 - Строение операционной системы для микроконтроллеров

Процессы в системе пользователь оформляет как отдельные функции. С помощью функций, входящих в интерфейс прикладного программирования ОС (API) процессу назначается базовый приоритет, выделяется при необходимости область оперативной памяти, создаются примитивы синхронизации.

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

Для расширения возможностей планировщика была введена концепция очков (points), начисляемых процессу при простое, по прерываниям от таймеров. Количество начисляемых очков зависит от приоритета процесса, приоритета пользователя в системе, количества системных тактов, прошедших с момента приостановления процесса. Таким образом реализуется состязательный доступ за право занять процессор: очередным активным процессом выбирается процесс, обладающий наибольшим количеством очков. Текущее значение очков хранится в оперативной памяти в таблице процессов. Также исходя из количества очков выбирается количество системных тактов, выдаваемых процессу для исполнения. Когда процесс переходит в активное состояние, счетчик очков процесса обнуляется.

Для обеспечения контроля прав пользователя реализованы следующие модули:

  • модуль авторизации пользователя. Для авторизации пользователю требуется тем или иным способом передать идентификатор и ключ по протоколу UART, после чего производится проверка соответствия введенных данных, и начинает выполняться основная часть программы с учетом пользовательских привилегий.
  • модуль хранения и проверки идентификаторов и ключей пользователей. Идентификаторы и ключи могут храниться как на энергонезависимой памяти EEPROM, так и на flash-памяти контроллера.

Для учета пользователей ОС использует таблицу пользователей, размещенную в памяти программ (flash). В таблице указаны идентификатор пользователя, ключ доступа, приоритет, а также метод, с помощью которого производится авторизация (передача ключа с помощью клавиатуры, интерфейса UART или иного средства). После проведения процедуры авторизации использованные выводы микроконтроллера могут быть переведены в режим общего пользования. Процедура авторизации может быть проведена многократно как в начале работы управляющей программы, так в ходе ее работы.

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

Таким образом, разрабатываемая ОС позволяет эффективно решать задачи, связанные с обеспечением безопасности выполняемых на микроконтроллерах программ, обеспечивая удобный для программиста интерфейс вызовов.

Литература

  1. Jonathan W. Valvano. Embedded microcontroller systems. Real time interfacing. – Cengage Learning. – 2010. – 822 p.

References

  1. Jonathan W. Valvano. Embedded microcontroller systems. Real time interfacing. – Cengage Learning. – 2010. – 822 p.