[[rtos:rtos|ОСРВ (RTOS)]] ---- ====== ChibiOS ====== {{tag>RTOS ChibiOS}} Некоторое время назад, я встретил в интернете очень интересный проект:[[chdoku>start|ChibiOS/RT]] ---- ===== Общая информация ===== {{:rtos:chibios-rt.png?nolink&100 |}}**ChibiOS** — проект компактной [[https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C|многозадачной]] операционной системы реального времени (ОСРВ) для встроенных систем. Проект состоит из трех независимых продуктов: * **RT** - высокопроизводительная RTOS для встраиваемых систем реального времени. * **NIL** - очень компактная RTOS для встраиваемых систем реального времени. * **HAL** - пакет включающий в себя набор абстрактных драйверов устройств дающий возможность легко портировать приложение на различные архитектуры. Кроме того, проект включает [[rtos:chibistudio|ChibiStudio]] - бесплатную среду разработки. ==== Лицензия ==== Компоненты ChibiOS доступны под лицензиями открытого ПО GPL3 или Apache 2.0. Есть несколько коммерческих [[http://chibios.org/dokuwiki/doku.php?id=chibios:licensing:start|лицензионных опций]] ==== Компоненты ChibiOS ==== **ChibiOS/RT** предназначена для встраиваемых систем реального времени, где важное требование для выполняемых приложений - это высокая производительность и компактный код. Данная ОС РВ характеризуется высокой мобильностью, маленьким объёмом и, в основном, по своей архитектуре оптимизирована для чрезвычайно эффективного переключения между задачами. Основные преимущества: * Высокая производительность RTOS * Статичная архитектура — все ресурсы статически выделяется во время компиляции. * Динамические расширения — динамические объекты поддерживаются как дополнительный слой надстройки статичного ядра. * Богатый набор примитивов: потоки, виртуальные таймеры, семафоры, мьютексы, переменные условия, сообщения, почтовые ящики, флаги событий. * Поддержка алгоритма приоритетного наследования мьютексов. **ChibiOS/NIL** создавался с идеей привнести RTOS функциональность для очень маленьких устройств и является вполне законченной RTOS. Основные преимущества: * Компактная RTOS, размер кода менее 1кБ при максимальной конфигурации. * Малый размер объектов в памяти, таких как потоки, семафоры и т.п. * Полностью статическая архитектура Вне зависимости от размера, ChibiOS/NIL очень эффективна и поддерживает широкий набор функций. **ChibiOS/HAL** предназначен для реализации уровня абстракции между приложением и базовым аппаратным обеспечением (периферией) микроконтроллера. HAL предоставляет API верхнего уровня для доступа к общей периферии MCU, такой как GPIO, ADC, SPI и т.д., а также реализует частотно-зависимую и платформо-зависимую инициализацию. Этот компонент распространяется только под лицензией Apache License 2.0 и является 100% бесплатным даже для коммерческого использования. Основные особенности: * уровень абстракции между приложением и аппаратурой MCU позволяет ускорить процесс разработки и позволяет применять объектно-ориентированный подход. Тонкости внутренней организации аппаратной части являются скрытыми для приложения (но не недоступными). * Поддерживает большинство общей стандартной периферии MCU: порт ввода/вывода (GPIO), последовательный порт (Serial), ADC, CAN, I2C, MAC, MMC, PWM, SPI, UART, USB, USB-CDC * Интерфейсный уровень, не привязанный к RTOS, называемый OSAL. Интерфейсы OSAL могут быть реализованы для поддержки любой аналогичной RTOS. * Поддержка RT и NIL RTOS из коробки. * Многоуровневая структура драйверов. * Портирован на многие современные микроконтроллеры. * Поддержка внешних компонентов uIP, lwIP, FatFs. ---- Автором операционной системы является господин 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 | Есть еще несколько платформ, поддержка которых пока не включена в официальные релизы и доступна из репозитория проекта. Это такие платформы: * AVR32 * Coldfire * Fujitsu 16FX * H8S * NiosII Реализация поддержки этих платформ выполнялась сторонними разработчиками и сейчас находится в стадии тестирования. В будущем, вероятно, будет включена в релиз. Актуальную информацию по поддерживаемым архитектурам можно посмотреть на официальном сайте: * ChibiOS/RT [[chdoku>chibios:product:rt:architectures|Supported Architectures]] * ChibiOS/NIL [[chdoku>chibios:product:nil:architectures|Supported Architectures]] ===== Поддержка аппаратуры ===== Очень большим достоинством ChibiOS является реализация драйверов периферии - Hardware Abstraction Layer (HAL). С использованием ChibiOS/HAL вполне реально писать прикладное ПО которое будет работать без дополнительных (или с минимальными) действий не только на разных кристаллах одной архитектуры, но и на разных архитектурах. Все кристалло и архитектуро зависимые вещи выносятся в файлы описания платы board.h/board.c. Набор поддерживаемой периферии довольно широк - детально его можно посмотреть в разделе [[chdoku>chibios:product:hal:platforms|Supported Platforms]] ===== Инструментальные средства ===== "Из коробки" поддерживаются три компилятора (см.[[rtos:chibios#поддерживаемые_архитектуры|Поддерживаемые архитектуры]]): * GCC * RealView Compilation Tools (RVCT) * IAR Для быстрого старта, автором сделан пакет [[rtos:chibistudio|ChibiStudio]]. Это по сути полностью готовая и настроенная связка Eclipse+GCC+нужные плагины. Скачать ее можно со страницы загрузки: [[http://sourceforge.net/projects/chibios/files/ChibiStudio/|ChibiStudio]] Кстати, ChibiStudio (т.е. Eclipse), похоже, единственный пакет имеющий плагин для визуализации процесса отладки. Ни под IAR, ни под Keil я таких плагинов не нашел. Для людей привычных к работе с GCC и Eclipse процесс отладки будет довольно удобным. В ChibiStudio есть еще один довольно удобный и нужный плагин - ChibiOS Board Generator. С его помощью можно создавать файлы board используя визуальный интерфейс. Более подробно этот процесс описан тут: [[http://blog.radiotech.kz/blog/stm32/39.html#cut|ChibiOS Board Generator]] Я лично больше пользуюсь [[http://y64.info/tbdev/browse.php?c18=1&search=Keil&incldead=0&cat=18|Keil MDK]], наверное в силу привычки, но и в этом случае особых проблем с отладкой не возникало. При наличии общих понятий о работе RTOS и наличии исходников ChibiOS/RT все вопросы быстро разрешаются. ===== Ссылки ===== [[rtos:chibios:start|ChibiOS/RT. Начало работы]] ===== Внешние ссылки ===== ==== Сайт проекта. Документация. ==== [[http://chibios.org|Официальный сайт ChibiOS]] \\ [[http://chibios.org/dokuwiki/doku.php?id=chibios:documentation:start|Страница документации по ChibiOS]] \\ [[https://github.com/ChibiOS/ChibiOS-RT|ChibiOS на GitHub]] \\ [[http://sourceforge.net/projects/chibios/|ChibiOS/RT free embedded RTOS на Sourceforge]] \\ [[http://chibios.sourceforge.net/html/index.html|ChibiOS/RT 2.6.9 full documentation]] \\ [[http://chibios.sourceforge.net/docs3/rt/index.html|ChibiOS/RT 3.1.2 online documentation]] ==== Статьи и обзоры: ==== [[http://we.easyelectronics.ru/STM32/stm32f103c8-chibios-ugfx-lcd-wh1602-primer.html#cut|STM32F103C8 + ChibiOS + uGFX + LCD WH1602 пример]] \\ [[http://we.easyelectronics.ru/RuslanPopov/armka-infrastruktura-proekta-dlya-chibios-rt.html|ARMka: Инфраструктура проекта для ChibiOS/RT]] \\ [[http://radiotech.kz/threads/chibios-i-stm32.163/|ChibiOS и STM32]] "Тема предназначена для глобального обсуждения аспектов разработки приложений под STM32, используя ОС реального времени ChibiOS. В первом топике буду вставлять нужные ссылки по теме, на документацию и т.д." \\ [[http://illumium.org/node/104|Исследуем работу стека нитей в ChibiOS]] "Операционные системы реального времени (RTOS) существенно облегчают разработку качественной программной начинки для микроконтроллеров. Делается это введением некоторых абстракций, таких как нити (потоки исполнения) и примитивы синхронизации (семафоры, мютексы, события, сообщения), потоки ввода/вывода, устройства слоя абстракции аппаратуры (HAL) и другие. В этой статье мы рассмотрим внутреннюю организацию нитей (threads), изолированных потоков исполнения кода, в ChibiOS." \\ [[http://blog.radiotech.kz/blog/stm32/39.html|Генерация board файлов для ChibiOS (ChibiOS Board Generator)]] "Создание board файлов для новой платы при использовании ChibiOS может оказаться очень трудоемким процессом. ChibiStudio или специальный плагин для среды Eclipse могут сделать его намного проще." ---- [[rtos:rtos|ОСРВ (RTOS)]]