stringtranslate.com

Операционные системы микроконтроллеров

Операционные системы для микроконтроллеров ( MicroC/OS , стилизованные под μC/OS или Micrium OS ) — операционная система реального времени (RTOS), разработанная Жаном Дж. Лаброссом в 1991 году. Это приоритетное вытесняющее ядро ​​реального времени для микропроцессоров , написанное в основном на языке программирования C. Оно предназначено для использования во встраиваемых системах .

MicroC/OS позволяет определять несколько функций в C, каждая из которых может выполняться как независимый поток или задача. Каждая задача выполняется с различным приоритетом и выполняется так, как будто она владеет центральным процессором (ЦП). Задачи с более низким приоритетом могут быть вытеснены задачами с более высоким приоритетом в любое время. Задачи с более высоким приоритетом используют службы операционной системы (ОС) (такие как задержка или событие), чтобы разрешить выполнение задач с более низким приоритетом. Службы ОС предоставляются для управления задачами и памятью, взаимодействия между задачами и синхронизации. [4]

История

Ядро MicroC/OS было первоначально опубликовано в трехчастной статье в журнале Embedded Systems Programming и в книге μC/OS The Real-Time Kernel Лабросса. [5] Сначала он намеревался просто описать внутреннее устройство портативной ОС, которую он разработал для собственного использования, но позже разработал ее как коммерческий продукт в своей собственной компании Micrium, Inc. в версиях II и III.

В 2016 году компания Micrium, Inc. была приобретена компанией Silicon Laboratories [6], и впоследствии она была выпущена с открытым исходным кодом под лицензией Apache .

Silicon Labs продолжает поддерживать продукт с открытым исходным кодом под названием Micrium OS для использования на их собственном кремнии [7] , а группа бывших сотрудников Micrium, Inc. (включая Лабросса) предоставляет консультации и поддержку как для μC/OS, так и для Cesium RTOS, фирменной версии, созданной сразу после выпуска продукта с открытым исходным кодом. [8]

μC/ОС-II

Основанный на исходном коде, написанном для μC/OS, и представленный как коммерческий продукт в 1998 году, μC/OS-II является переносимым , ПЗУ, масштабируемым , вытесняющим, реального времени, детерминированным, многозадачным ядром для микропроцессоров и цифровых сигнальных процессоров (DSP). Он управляет до 64 задачами. Его размер можно масштабировать (от 5 до 24 Кбайт), чтобы содержать только функции, необходимые для данного использования.

Большая часть μC/OS-II написана на высокопортируемом ANSI C , а целевой микропроцессор-специфичный код написан на языке ассемблера . Использование последнего сведено к минимуму для облегчения переноса на другие процессоры.

Использование во встраиваемых системах

μC/OS-II был разработан для встроенного использования. Если у производителя есть соответствующий набор инструментов (т. е. компилятор C, ассемблер и компоновщик-локатор [ необходимо разъяснение ] ), μC/OS-II может быть встроен как часть продукта.

μC/OS-II используется во многих встраиваемых системах, включая:

Состояния задач

μC/OS-II — многозадачная операционная система. Каждая задача — бесконечный цикл и может находиться в одном из следующих пяти состояний (см. дополнительно рисунок ниже)

Кроме того, он может управлять до 64 задачами. Однако рекомендуется, чтобы восемь из этих задач были зарезервированы для μC/OS-II, оставляя приложению до 56 задач. [9]

Ядра

Ядро — это название программы, которая выполняет большинство задач по обслуживанию операционной системы. Загрузчик передает управление ядру, которое инициализирует различные устройства в известном состоянии и подготавливает компьютер к общим операциям. [10] Ядро отвечает за управление задачами (т. е. за управление временем ЦП) и взаимодействие между задачами. [11] Основная услуга, предоставляемая ядром, — переключение контекста .

Планировщик — это часть ядра, отвечающая за определение того, какая задача будет запущена следующей. [ 12] Большинство ядер реального времени являются приоритетными. В приоритетном ядре управление ЦП всегда отдается задаче с наивысшим приоритетом, готовой к запуску. Существует два типа приоритетных ядер: невытесняющие и вытесняющие . Невытесняющие ядра требуют, чтобы каждая задача делала что-то, чтобы явно отказаться от управления ЦП. [12] Вытесняющее ядро ​​используется, когда важнее скорость отклика системы. Таким образом, μC/OS-II и большинство коммерческих ядер реального времени являются вытесняющими. [13] Высшей приоритетной задаче, готовой к запуску, всегда отдается управление ЦП.

Постановка задач

Заданиям с самой высокой скоростью выполнения присваивается наивысший приоритет с использованием скоростно-монотонной планировки . [14] Этот алгоритм планирования используется в операционных системах реального времени (RTOS) с классом планирования со статическим приоритетом . [15]

Управление задачами

В вычислительной технике задача — это единица выполнения . В некоторых операционных системах задача является синонимом процесса , в других — потока . В компьютерных системах пакетной обработки задача — это единица выполнения в рамках задания . Пользователь системы μC/OS-II может управлять задачами, используя следующие функции:

Управление памятью

Чтобы избежать фрагментации , μC/OS-II позволяет приложениям получать блоки памяти фиксированного размера из раздела , созданного из непрерывной области памяти. Все блоки памяти имеют одинаковый размер, а раздел содержит целое число блоков. Выделение и освобождение этих блоков памяти выполняется за постоянное время и является детерминированной системой . [17]

Управление временем

μC/OS-II требует предоставления периодического источника времени для отслеживания задержек и тайм-аутов. Тик должен происходить от 10 до 1000 раз в секунду, или Герц . Чем выше частота тика, тем больше накладных расходов μC/OS-II накладывает на систему. Частота тика часов зависит от желаемого разрешения тика приложения. Источники тика могут быть получены путем выделения аппаратного таймера или путем генерации прерывания от сигнала линии питания переменного тока (AC) (50 или 60 Гц). Этот периодический источник времени называется тиком часов. [18]

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

Коммуникация между задачами

Межзадачное или межпроцессное взаимодействие в μC/OS-II происходит через: семафоры , почтовый ящик сообщений, очереди сообщений, задачи и процедуры обслуживания прерываний (ISR). Они могут взаимодействовать друг с другом, когда задача или ISR сигнализирует о задаче через объект ядра, называемый блоком управления событиями (ECB). Сигнал считается событием.

мкС/ОС-III

μC/OS-III — это аббревиатура от Micro-Controller Operating Systems Version 3, представленная в 2009 году и добавляющая функциональность к μC/OS-II RTOS.

μC/OS-III предлагает все возможности и функции μC/OS-II. Самое большое отличие — это количество поддерживаемых задач. μC/OS-II допускает только 1 задачу на каждом из 255 уровней приоритета, максимум 255 задач. μC/OS-III допускает любое количество прикладных задач, уровней приоритета и задач на уровень, ограниченное только доступом процессора к памяти. [19] [20]

μC/OS-II и μC/OS-III в настоящее время поддерживаются компанией Micrium, Inc., дочерней компанией Silicon Labs, и могут лицензироваться по продукту или по линейке продуктов.

Использование во встраиваемых системах

Использование такое же, как и для μC/OS-II.

Состояния задач

μC/OS-III — многозадачная операционная система. Каждая задача представляет собой бесконечный цикл и может находиться в одном из пяти состояний (спящий, готовый, работающий, прерванный или ожидающий). μC/OS-III поддерживает неограниченное количество приоритетов задач, но настройка μC/OS-III на наличие от 32 до 256 приоритетов задач обычно хорошо подходит для большинства встраиваемых систем. [21]

Круговое планирование

Когда две или более задач имеют одинаковый приоритет, ядро ​​позволяет одной задаче выполняться в течение предопределенного периода времени, называемого квантом , а затем выбирает другую задачу. Этот процесс называется циклическим планированием или временным разделением. Ядро передает управление следующей задаче в очереди, если:

Ядра

Функциональность ядра для микроС/ОС-III такая же, как и для микроС/ОС-II.

Управление задачами

Управление задачами также функционирует так же, как и в μC/OS-II. Однако μC/OS-III поддерживает многозадачность и позволяет приложению иметь любое количество задач. Максимальное количество задач ограничено только объемом памяти компьютера (как кода, так и пространства данных), доступного процессору.

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

Управление памятью

Управление памятью осуществляется так же, как в μC/OS-II.

Управление временем

μC/OS-III предлагает те же функции управления временем, что и μC/OS-II. Он также предоставляет сервисы приложениям, чтобы задачи могли приостанавливать свое выполнение на определяемые пользователем задержки. Задержки указываются числом тактов часов или часов, минут, секунд и миллисекунд .

Коммуникация между задачами

Иногда задача или ISR должны передавать информацию другой задаче, поскольку небезопасно, чтобы две задачи одновременно обращались к одним и тем же данным или аппаратному ресурсу. Это можно решить с помощью передачи информации, называемой межзадачной коммуникацией. Информация может передаваться между задачами двумя способами: через глобальные данные или путем отправки сообщений.

При использовании глобальных переменных каждая задача или ISR должны гарантировать, что у нее есть исключительный доступ к переменным. Если задействован ISR, единственный способ обеспечить исключительный доступ к общим переменным — отключить прерывания . Если две задачи совместно используют данные, каждая может получить исключительный доступ к переменным, отключив прерывания, заблокировав планировщик, используя семафор или, что предпочтительнее, используя семафор взаимного исключения . Сообщения могут быть отправлены либо в промежуточный объект, называемый очередью сообщений , либо напрямую в задачу, поскольку в μC/OS-III каждая задача имеет собственную встроенную очередь сообщений. Используйте внешнюю очередь сообщений, если несколько задач должны ожидать сообщений. Отправьте сообщение напрямую задаче, если только одна задача будет обрабатывать полученные данные. Пока задача ожидает прибытия сообщения, она не использует процессорное время.

Порты

Порт включает три аспекта: ЦП, ОС и код платы (BSP). μC/OS-II и μC/OS-III имеют порты для большинства популярных процессоров и плат на рынке и подходят для использования в критически важных для безопасности встроенных системах, таких как авиация, медицинские системы и ядерные установки. Порт μC/OS-III включает запись или изменение содержимого трех файлов ядра: OS_CPU.H, OS_CPU_A.ASM, и OS_CPU_C.C. Наконец, создайте или измените пакет поддержки платы (BSP) для используемой оценочной платы или целевой платы. Порт μC/OS-III похож на порт μC/OS-II. Существует значительно больше портов, чем указано здесь, и порты постоянно развиваются. μC/OS-II и μC/OS-III поддерживаются популярными библиотеками SSL/TLS, такими как wolfSSL , которые обеспечивают безопасность всех соединений.

Изменение лицензирования

После приобретения компанией Silicon Labs в феврале 2020 года компания Micrium перешла на модель лицензирования с открытым исходным кодом. Сюда входят uC/OS III, все предыдущие версии, все компоненты: USB, файловая система , графический интерфейс, TCP/IP и т. д.

Документация и поддержка

Поддержка доступна через типичный форум поддержки и несколько всеобъемлющих книг, некоторые из которых адаптированы под заданную архитектуру микроконтроллера и платформу разработки, в виде бесплатных PDF-файлов или в виде недорогой покупки в твердом переплете. Платная поддержка доступна в Weston Embedded Solutions.

Ссылки

  1. ^ "Gecko Platform 4.2.0.0 GA" (PDF) . 2022-12-14 . Получено 2023-01-04 .
  2. ^ "gecko_sdk Releases on github.com". GitHub . Получено 2023-01-04 .
  3. ^ abc "Заметки о выпуске Cs/OS3". Weston Embedded Solutions.
  4. ^ "NiosII GCC with MicroC/OS". Факультет электротехники и вычислительной техники . Корнелльский университет. Июнь 2006 г. Получено 25 апреля 2017 г.
  5. Лабросс, Жан Дж. (15 июня 2002 г.). μC/OS Ядро реального времени (2-е изд.). ЦРК Пресс. ISBN 978-1578201037.
  6. ^ "Что такое Micrium?". Weston Embedded Solutions . Получено 2023-01-04 .
  7. ^ "Micrium Software and Documentation" . Получено 2023-01-04 .
  8. ^ "Почему Cesium RTOS?". Weston Embedded Solutions . Получено 2023-01-04 .
  9. ^ Лабросс, Жан Дж. MicroC/OS-II: Ядро реального времени (2-е изд.). стр. 77.
  10. ^ Викиверситет:Операционные системы/Модели ядра#Монолитное ядро
  11. ^ Лабросс, Жан Дж. MicroC/OS-II: Ядро реального времени (2-е изд.). стр. 39.
  12. ^ ab Labrosse, Jean J. MicroC/OS-II: Ядро реального времени (2-е изд.). стр. 40.
  13. ^ Лабросс, Жан Дж. MicroC/OS-II: Ядро реального времени (2-е изд.). стр. 42.
  14. ^ Лю, Чунг Ланг; Лейланд, Джеймс У. (1973). «Алгоритмы планирования для многопрограммирования в жесткой среде реального времени». Журнал ACM . 20 (1): 46–61. CiteSeerX 10.1.1.36.8216 . doi :10.1145/321738.321743. S2CID  59896693. 
  15. ^ Бове, Дэниел. «Понимание ядра Linux». Архивировано из оригинала 21.09.2014.
  16. ^ Лабросс, Жан Дж. MicroC/OS-II: Ядро реального времени (2-е изд.). С. 45–49.
  17. ^ Лабросс, Жан Дж. MicroC/OS-II: Ядро реального времени (2-е изд.). С. 273–285.
  18. ^ Лабросс, Жан Дж. MicroC/OS-II: Ядро реального времени (2-е изд.). С. 145–152.
  19. ^ «Сравнение функций μC/OS-II и μC/OS-III» . Микриум .
  20. ^ "Обзор μC/OS-III". Micrium .
  21. ^ https://media.digikey.com/PDF/Data%20Sheets/Micrium%20PDFs/UC_OS-III_RTOS.pdf#:~:text=Micrium%E2%80%99s%20%CE%BCC%2FOS-III%20supports % 20ARM7%2F9%2C%20Cortex-MX%2C%20Nios-II%2C%20PowerPC%2C%20Coldfire%2C,%20доступны%20для%20скачивания%20 с%20%20Micrium%20веб-сайта.

Источники

Внешние ссылки