Операционная система реального времени Chibios/RT (Введение)

chibios
Автора давно интересовала тема применения операционных систем реального времени в микроконтроллерах. Недавно начал освоение stm32, закупив все Discovery до которых дотянулись жадные руки — stm32vl-discovery, stm32l-discovery, stm32F4-discovery. Начал изучать соответствующие семейства микроконтроллеров — stm32F100, stm32L152, stm32F407 — сразу наступил на грабли — библиотеки периферии у них разные… То есть Standard Peripherals Library для каждого контроллера часто по-разному называет регистры, таймеры, шины, и прочую периферию… Получается, что с каждым контроллером придется разбираться отдельно. Сама идея CMSIS оказалась опошлена — хотя ядро и общее, но работать программисту приходится в основном с периферией! А она отличается в разных семействах STM32 (я молчу про других производителей ARM-CM3). Хочется отвлечься от деталей реализации и сразу попробовать процессор «в бою».

Следующим душевным движением была мысль что такие ресурсы смешно использовать для банального полинга входов и выходов. На таких монстрах как F103 или, тем более, F407, можно организовать целую экосистему — отдельные задачи для общения с пользователем, с АЦП, с цифровыми входами… С приоритетами, мютексами и локами, блекджеком и шлюхами, со стеками протоколов и терминальным доступом к настройкам.
Бродя в смятении по интернетам, наткнулся на сайт проекта Chibios/RT — операционной системы реального времени, маскотом которого является этот симпатичный геккончик (?).

Автором операционной системы является господин Giovanni Di Sirio, который живет в прекрасном городе Салерно, Италия. Он постоянно находится на форуме поддержки, и на все возникающие вопросы отвечает очень быстро и по делу.
Салерно... Может на пляж?
В поставке Chibios есть демонстрационные примеры для всех плат Discovery, включая ST8, которых у меня нет. Есть порты и для msp430, lpc и т. д.
Приятным моментом является наличие драйверов под все платформы, для которых есть демонстрационные примеры. Среди стандартных драйверов — Port, Serial, ADC, CAN, EXT, GPT, I2C, ICU, MAC, MMC, PWM, RTC, SDC, SPI, UART, USB, USB-CDC.
Обещает Джиованни и следующие плюшки:
  • Эффективное и портируемое ядро с вытесняющей многозадачностью
  • Лучшее в своем классе время переключения контекста
  • Большое количество поддерживаемых архитектур и платформ.
  • Статическая архитектура, все статически выделяется во время компиляции.
  • Динамические расширения, динамические объекты поддерживаются опциональным слоем, реализованным поверх статического ядра.
  • Большой набор примитивов: потоки, виртуальные таймеры, семафоры, мютексы, условные переменные, сообщения, почтовые ящики, флаги событий, очереди.
  • Поддержка алгоритма наследуемого приоритета в мютексах.
  • Поддержка внешних компонентов вроде стека TCP/IP и FATFS.

Поддерживаются различные среды программирования: Keil, IAR, Atollic. Но лучше всего работать в связке Eclipse + gcc + gdb. Помучившись, можно получить отличную IDE, тем более, что Джиованни написал под Eclipse специальный плагин, позволяющий узнавать положение дел в системе. В наличии на сайте и толковые статьи по настройке этого самого Eclipse + st-link. Но, пожалуй, главным достоинством системы, является ее разработчик — высочайшая квалификация и готовность помогать, отвечая порой на глупые вопросы новичков. Есть и документация — в основном в формате генерируемым Oxigen.
Что дальше? Качаем, читаем статьи про настройку IDE, открываем демонстрационные примеры и читаем про них статьи.

Комментарии (23)

RSS свернуть / развернуть
Статьи такая, будто: «Я вам показал где, берите и *итесь сами». Если так, то логичнее разместить в соответствующем блоге Или это все же введение в цикл статей?
+1
Боюсь показаться занудой и «ОБИДОЙ», но без обид. Статья ни к чему не призывающая. Типа как я провел лето или типо того. Может я не заметил намека на продолжение, но к чему эта информация? Все читали в топике(не помню точно каком) про эту ОС, и, думаю, следят за новостями… Короче, если будет толковое продолжение, то почитаю, а так, это просто ...!
P/S/ Без обид =)
0
а слово «Введение» в заголовке ни о чем не говорит? Продолжение будет…
0
Ну хотя бы тогда абзац Что дальше? привидите в соответствие с тем, что будет продолжение. О его возможности только заголовок и говорит, и то с натяжкой. Тело поста же совершенно не наводит на такие мысли.
Напишите хотя бы «На примере своих глаблей и велосипедов я покажу некоторые из возможностей данной ОСРВ».
0
Спасибо за наводку!!!
0
Я не понял при чем здесь пассаж о несовместимых SPL. При чем здесь они к ОСРВ? Или ось включает в себя сразу HAL? И так придется допиливать периферию и писать драйвера. Куда интереснее в этом плане СОХ от Coocox- в перспективе это HAL для всего семейства Cortex M3, независимо от производителя.
0
пассаж о несовместимых SPL. При чем здесь они к ОСРВ? Или ось включает в себя сразу HAL?
а чо, ОСРВ перевести не хватило духу к остальным в инглиш ?)
0
как раз высокоуровневый HAL позволяет одинаково работать не только на разных семействах, но даже и на разных контроллерах
0
Когда-то для талисманом PDP совместимого машинного кода была какая-то саламандра. Якобы у неё на двух руках 8 пальцев, а там как раз 8-ричное представление активно использовалось.
0
для
0
я тоже долго думал в какой блог опубликовать… ОСРВ или про STM32. Во-первых автор ОСРВ больше всего знаком с STM32, и больше всего примеров по этой архитектуре. Во-вторых я использовал эту ось с STM32100 и STM32103, поэтому буду рассказывать в дальнейшем о ее использовании совместно с библиотекой SPL
0
И все же, ИМХО, статья больше к разделу RTOS относится, я бы ее туда положил.
0
Дофига матершинных функций и непонятных движений.
Запилите серию статей про эту ОС.
0
  • avatar
  • pkm
  • 06 мая 2012, 09:33
перенес в RTOS
0
Эффективное и портируемое ядро с вытесняющей многозадачностью
В каждой РТОС задачи вытесняются. И ядро не портируют а портирую функции переключения контекста.

Лучшее в своем классе время переключения контекста

Это явно погорячились. Условий теста я нигде не нашел.

Большое количество поддерживаемых архитектур и платформ.


8(по факту 7) архитектур как-то маловато будет.

Статическая архитектура, все статически выделяется во время компиляции.

Какбы под МК это везде. Это в тоже время недостаток.

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

Это тоже у всех есть. К примеру, в scmRTOS вообще можно дописывать свои сервисы не меняя код ядра.

Поддержка внешних компонентов вроде стека TCP/IP и FATFS.

Да ко всем РТОС с пол пинка прикручиваются подобные либы. И это без всяких поддержек.
-2
  • avatar
  • a9d
  • 06 мая 2012, 17:04
Ну-ну, давайте, прикрутите к хальтовой асм-ртос. Поглядим на сколько вы, такой умный, способны реализовать пол пинка.
P.S.: по остальным пунктам вообще молчу.
0
у халта не ртос а «многозадачная» ОС.
Я еще не видел систему где бы это вызывало проблемы. Да и по чему там это должно вызвать их?
-1
Прошу сочинить пошаговое руководство для чайников «как настроить Eclipse под Win для STM32F4Discovery, чтобы после нажатия Project/Build компилировалась эта ChibiOS без ошибок»
0
  • avatar
  • Lola
  • 04 сентября 2012, 21:59
а также приложить архив с проектом…
0
www.chibios.org/dokuwiki/doku.php?id=chibios:articles:stm32vl_discovery&s[]=stm32
демки проектов есть в дистрибутиве, в каталоге demos
0
www.chibios.org/dokuwiki/doku.php?id=chibios:guides:eclipse1
Setting up an Eclipse-based IDE
Using an Eclipse-based IDE
Using ST-Link into an Eclipse environment
0
Пока это всё-таки только перевод их текста. Лучше добавить всё-таки какого-то своего контента — наример, зачем нам вообще ОС или почему именно эта, а не другая ОС :)
0
удачи…
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.