Обзор FreeRTOS
FreeRTOS — это многозадачная, мульти‑
платформенная, бесплатная операционная
система жесткого реального времени с откры‑
тым исходным кодом. FreeRTOS была раз‑
работана компанией Real Time Engineers Ltd.
специально для встраиваемых систем. На мо‑
мент написания статьи (версия FreeRTOS 6.1.0)
ОС официально поддерживает 23 архитек‑
туры и 57 платформ (в подавляющем боль‑
шинстве — микроконтроллеры) [7]. В те‑
чение 2008 и 2009 годов произошло более
77 500 загрузок FreeRTOS с официального
сайта, что делает ее одной из самых популяр‑
ных ОСРВ на сегодня. Б
óльшая часть кода
FreeRTOS написана на языке Си, ассемблер‑
ные вставки минимального объема применя‑
ются лишь там, где невозможно применить
Си из‑за специфики конкретной аппаратной
платформы.
Существуют так называемые официально
поддерживаемые аппаратные платформы —
официальные порты и неофициальные,
которые поставляются «как есть» и не под‑
держиваются напрямую. Кроме того, для
одного и того же порта могут поддерживать‑
ся несколько средств разработки. Список
официальных портов и средств разработки
приведен в таблице 1.
Основные характеристики FreeRTOS:
1. Планировщик FreeRTOS поддерживает три
типа многозадачности:
– вытесняющую;
– кооперативную;
– гибридную.
2. Размер ядра FreeRTOS составляет всего
4–9 кбайт, в зависимости от типа платфор‑
мы и настроек ядра.
3. FreeRTOS написана на языке Си (исходный
код ядра представлен в виде всего лишь че‑
тырех Си‑файлов).
4. Поддерживает задачи (tasks) и сопрограм‑
мы (co‑routines). Сопрограммы специально
созданы для МК с малым объемом ОЗУ.
5. Богатые возможности трассировки.
6. Возможность отслеживать факт перепол‑
нения стека.
7. Нет программных ограничений на количе‑
ство одновременно выполняемых задач.
8. Нет программных ограничений на количе‑
ство приоритетов задач.
9. Нет ограничений в использовании прио‑
ритетов: нескольким задачам может быть
назначен одинаковый приоритет.
10. Развитые средства синхронизации «зада‑
ча – задача» и «задача – прерывание»:
– очереди;
– двоичные семафоры;
– счетные семафоры;
– рекурсивные семафоры;
– мьютексы.
11. Мьютексы с наследованием приоритета.
12. Поддержка модуля защиты памяти
(Memory protection unit, MPU) в процес‑
сорах Cortex‑M3.
13. Поставляется с отлаженными примерами
проектов для каждого порта и для каждой
среды разработки.
14. FreeRTOS полностью бесплатна, моди‑
фицированная лицензия GPL позволяет
использовать FreeRTOS в проектах без
раскрытия исходных кодов.
15. Документация в виде отдельного доку‑
мента платная, но на официальном сайте
[7] в режиме on‑line доступно исчерпы‑
вающее техническое описание на англий‑
ском языке.
Работа планировщика FreeRTOS в режи‑
ме вытесняющей многозадачности имеет
много общего с алгоритмом переключения
потоков в современных ОС общего назначе‑
ния. Вытесняющая многозадачность пред‑
полагает, что любая выполняющаяся задача
с низким приоритетом прерывается готовой
к выполнению задачей с более высоким при‑
оритетом. Как только высокоприоритетная
|