Некоторое время назад, я встретил в интернете очень интересный проект:ChibiOS/RT
ChibiOS — проект компактной многозадачной операционной системы реального времени (ОСРВ) для встроенных систем. Проект состоит из трех независимых продуктов:
Кроме того, проект включает ChibiStudio - бесплатную среду разработки.
Компоненты ChibiOS доступны под лицензиями открытого ПО GPL3 или Apache 2.0. Есть несколько коммерческих лицензионных опций
ChibiOS/RT предназначена для встраиваемых систем реального времени, где важное требование для выполняемых приложений - это высокая производительность и компактный код. Данная ОС РВ характеризуется высокой мобильностью, маленьким объёмом и, в основном, по своей архитектуре оптимизирована для чрезвычайно эффективного переключения между задачами.
Основные преимущества:
ChibiOS/NIL создавался с идеей привнести RTOS функциональность для очень маленьких устройств и является вполне законченной RTOS. Основные преимущества:
Вне зависимости от размера, ChibiOS/NIL очень эффективна и поддерживает широкий набор функций.
ChibiOS/HAL предназначен для реализации уровня абстракции между приложением и базовым аппаратным обеспечением (периферией) микроконтроллера.
HAL предоставляет API верхнего уровня для доступа к общей периферии MCU, такой как GPIO, ADC, SPI и т.д., а также реализует частотно-зависимую и платформо-зависимую инициализацию.
Этот компонент распространяется только под лицензией Apache License 2.0 и является 100% бесплатным даже для коммерческого использования. Основные особенности:
Автором операционной системы является господин Giovanni Di Sirio, который живет в прекрасном городе Салерно, Италия. Официальный сайт проекта http://chibios.org.
В принципе, там есть вся необходимая информация для знакомства и начала работы с системой. Единственный минус - сайт англоязычный. Поэтому часть информации буду дублировать тут, в качестве шпаргалки, попутно добавляя свои комментарии и различные полезные ссылки.
ОС поддерживает много архитектур. Этот список постоянно расширяется. Вот список поддерживаемых архитектур, который был на официальном сайте до момента разделения ChibiOS на два компонента RT и NIL и выделения HAL в отдельный компонент:
Архитектура ядра | Компилятор | Поддерживаемые платформы |
---|---|---|
ARM Cortex-M0 (ARMv6-M) | GCC | LPC11xx, LPC11Uxx, STM32F0xx |
ARM Cortex-M0 (ARMv6-M) | RVCT | LPC11xx, LPC11Uxx, STM32F0xx |
ARM Cortex-M3 (ARMv7-M) | GCC | LPC13xx, STM32F1xx, STM32F2xx, STM32L1xx |
ARM Cortex-M3 (ARMv7-M) | IAR | LPC13xx, STM32F1xx, STM32F2xx, STM32L1xx |
ARM Cortex-M3 (ARMv7-M) | RVCT | LPC13xx, STM32F1xx, STM32F2xx, STM32L1xx |
ARM Cortex-M4 (ARMv7-ME) | GCC | STM32F3xx, STM32F4xx |
ARM Cortex-M4 (ARMv7-ME) | IAR | STM32F3xx, STM32F4xx |
ARM Cortex-M4 (ARMv7-ME) | RVCT | STM32F3xx, STM32F4xx |
ARM7 | GCC | AT91SAM7x, LPC214x |
MegaAVR | GCC | ATmega128, AT90CAN128, ATmega328p, ATmega1280 |
MSP430 | GCC | MSP430F1611 |
Power Architecture e200z | GCC/HighTec | SPC56x (all) |
STM8 | Cosmic | STM8L, STM8S |
STM8 | Raisonance | STM8L, STM8S |
Есть еще несколько платформ, поддержка которых пока не включена в официальные релизы и доступна из репозитория проекта. Это такие платформы:
Реализация поддержки этих платформ выполнялась сторонними разработчиками и сейчас находится в стадии тестирования. В будущем, вероятно, будет включена в релиз.
Актуальную информацию по поддерживаемым архитектурам можно посмотреть на официальном сайте:
Очень большим достоинством ChibiOS является реализация драйверов периферии - Hardware Abstraction Layer (HAL). С использованием ChibiOS/HAL вполне реально писать прикладное ПО которое будет работать без дополнительных (или с минимальными) действий не только на разных кристаллах одной архитектуры, но и на разных архитектурах. Все кристалло и архитектуро зависимые вещи выносятся в файлы описания платы board.h/board.c. Набор поддерживаемой периферии довольно широк - детально его можно посмотреть в разделе Supported Platforms
«Из коробки» поддерживаются три компилятора (см.Поддерживаемые архитектуры):
Для быстрого старта, автором сделан пакет ChibiStudio. Это по сути полностью готовая и настроенная связка Eclipse+GCC+нужные плагины. Скачать ее можно со страницы загрузки: ChibiStudio
Кстати, ChibiStudio (т.е. Eclipse), похоже, единственный пакет имеющий плагин для визуализации процесса отладки. Ни под IAR, ни под Keil я таких плагинов не нашел. Для людей привычных к работе с GCC и Eclipse процесс отладки будет довольно удобным.
В ChibiStudio есть еще один довольно удобный и нужный плагин - ChibiOS Board Generator. С его помощью можно создавать файлы board используя визуальный интерфейс. Более подробно этот процесс описан тут: ChibiOS Board Generator
Я лично больше пользуюсь Keil MDK, наверное в силу привычки, но и в этом случае особых проблем с отладкой не возникало. При наличии общих понятий о работе RTOS и наличии исходников ChibiOS/RT все вопросы быстро разрешаются.
Официальный сайт ChibiOS
Страница документации по ChibiOS
ChibiOS на GitHub
ChibiOS/RT free embedded RTOS на Sourceforge
ChibiOS/RT 2.6.9 full documentation
ChibiOS/RT 3.1.2 online documentation
STM32F103C8 + ChibiOS + uGFX + LCD WH1602 пример
ARMka: Инфраструктура проекта для ChibiOS/RT
ChibiOS и STM32 «Тема предназначена для глобального обсуждения аспектов разработки приложений под STM32, используя ОС реального времени ChibiOS. В первом топике буду вставлять нужные ссылки по теме, на документацию и т.д.»
Исследуем работу стека нитей в ChibiOS «Операционные системы реального времени (RTOS) существенно облегчают разработку качественной программной начинки для микроконтроллеров. Делается это введением некоторых абстракций, таких как нити (потоки исполнения) и примитивы синхронизации (семафоры, мютексы, события, сообщения), потоки ввода/вывода, устройства слоя абстракции аппаратуры (HAL) и другие. В этой статье мы рассмотрим внутреннюю организацию нитей (threads), изолированных потоков исполнения кода, в ChibiOS.»
Генерация board файлов для ChibiOS (ChibiOS Board Generator) «Создание board файлов для новой платы при использовании ChibiOS может оказаться очень трудоемким процессом. ChibiStudio или специальный плагин для среды Eclipse могут сделать его намного проще.»