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


Автора давно интересовала тема применения операционных систем реального времени в микроконтроллерах. Недавно начал освоение 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, открываем демонстрационные примеры и читаем про них статьи.
- 0
- 05 мая 2012, 22:02
- DeusExMachina
Статьи такая, будто: «Я вам показал где, берите и *итесь сами». Если так, то логичнее разместить в соответствующем блоге Или это все же введение в цикл статей?
Боюсь показаться занудой и «ОБИДОЙ», но без обид. Статья ни к чему не призывающая. Типа как я провел лето или типо того. Может я не заметил намека на продолжение, но к чему эта информация? Все читали в топике(не помню точно каком) про эту ОС, и, думаю, следят за новостями… Короче, если будет толковое продолжение, то почитаю, а так, это просто ...!
P/S/ Без обид =)
P/S/ Без обид =)
а слово «Введение» в заголовке ни о чем не говорит? Продолжение будет…
- DeusExMachina
- 06 мая 2012, 07:40
- ↑
- ↓
Ну хотя бы тогда абзац Что дальше? привидите в соответствие с тем, что будет продолжение. О его возможности только заголовок и говорит, и то с натяжкой. Тело поста же совершенно не наводит на такие мысли.
Напишите хотя бы «На примере своих глаблей и велосипедов я покажу некоторые из возможностей данной ОСРВ».
Напишите хотя бы «На примере своих глаблей и велосипедов я покажу некоторые из возможностей данной ОСРВ».
Я не понял при чем здесь пассаж о несовместимых SPL. При чем здесь они к ОСРВ? Или ось включает в себя сразу HAL? И так придется допиливать периферию и писать драйвера. Куда интереснее в этом плане СОХ от Coocox- в перспективе это HAL для всего семейства Cortex M3, независимо от производителя.
- count_enable
- 06 мая 2012, 00:36
- ↓
как раз высокоуровневый HAL позволяет одинаково работать не только на разных семействах, но даже и на разных контроллерах
- DeusExMachina
- 06 мая 2012, 07:41
- ↑
- ↓
я тоже долго думал в какой блог опубликовать… ОСРВ или про STM32. Во-первых автор ОСРВ больше всего знаком с STM32, и больше всего примеров по этой архитектуре. Во-вторых я использовал эту ось с STM32100 и STM32103, поэтому буду рассказывать в дальнейшем о ее использовании совместно с библиотекой SPL
- DeusExMachina
- 06 мая 2012, 08:02
- ↓
Эффективное и портируемое ядро с вытесняющей многозадачностьюВ каждой РТОС задачи вытесняются. И ядро не портируют а портирую функции переключения контекста.
Лучшее в своем классе время переключения контекста
Это явно погорячились. Условий теста я нигде не нашел.
Большое количество поддерживаемых архитектур и платформ.
8(по факту 7) архитектур как-то маловато будет.
Статическая архитектура, все статически выделяется во время компиляции.
Какбы под МК это везде. Это в тоже время недостаток.
Большой набор примитивов: потоки, виртуальные таймеры, семафоры, мютексы, условные переменные, сообщения, почтовые ящики, флаги событий, очереди.
Это тоже у всех есть. К примеру, в scmRTOS вообще можно дописывать свои сервисы не меняя код ядра.
Поддержка внешних компонентов вроде стека TCP/IP и FATFS.
Да ко всем РТОС с пол пинка прикручиваются подобные либы. И это без всяких поддержек.
Прошу сочинить пошаговое руководство для чайников «как настроить Eclipse под Win для STM32F4Discovery, чтобы после нажатия Project/Build компилировалась эта ChibiOS без ошибок»
www.chibios.org/dokuwiki/doku.php?id=chibios:articles:stm32vl_discovery&s[]=stm32
демки проектов есть в дистрибутиве, в каталоге demos
демки проектов есть в дистрибутиве, в каталоге demos
- DeusExMachina
- 05 сентября 2012, 17:52
- ↑
- ↓
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
Setting up an Eclipse-based IDE
Using an Eclipse-based IDE
Using ST-Link into an Eclipse environment
- DeusExMachina
- 05 сентября 2012, 17:46
- ↑
- ↓
Комментарии (23)
RSS свернуть / развернуть