Пример Serial Echo (UART) с использованием event на ChibiOS, STM32

Изменения в halconf.h

#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
#define HAL_USE_SERIAL              TRUE
#endif
#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
#define SERIAL_DEFAULT_BITRATE      115200 // set baudrate here
#endif

Изменения в mcuconf.h

#define STM32_SERIAL_USE_USART1             TRUE

Читать далее Пример Serial Echo (UART) с использованием event на ChibiOS, STM32

Как портировать код с ChibiOS 2.x в ChibiOS 3.x

ChibiOS 3.0 содержит многочисленные изменения и улучшения, API очень похож на версию 2.6.х, но есть некоторые отличия, которые следует учитывать.

Соглашение об именовании объектов API:
Имена API остались в основном те же. Был введен новый класс Х. Функции или макросы Х-класса предназначены для того, чтобы быть вызваны в любом месте.
Некоторые из существующих функций были переименованы. Если вы видите ошибки компиляции функции или макроса, первой проверкой если функция была переименована будет добавление буквы X в конце названия функции.
Читать далее Как портировать код с ChibiOS 2.x в ChibiOS 3.x

Операционная система реального времени ChibiOS

ChibiOS/RT — компактная многозадачная операционная система реального времени (ОСРВ) для встроенных систем. Распространяется под модифицированной лицензией GPLv3.

Краткое описание системы на домашней странице проекта гласит:

ChibiOS/RT предназначена для встраиваемых систем реального времени и где важное требование для выполняемых приложений — это эффективность и компактный код. Данная ОС РВ характеризуется высокой мобильностью, маленьким объёмом и, в основном, по своей архитектуре оптимизирована для чрезвычайно эффективного переключения между задачами.

Читать далее Операционная система реального времени ChibiOS

Термины и определения многозадачности

Определения

Для начала дадим несколько определений.

Ядро — совокупность подпрограмм и системных переменных, обеспечивающих взаимодействие задач и разделение ресурсов контроллера между ними. Ядро скрыто от программиста, взаимодействие с ним обеспечивается специальными сервисами ОС.

Задачи — самостоятельные подпрограммы, имеющие возможность работать параллельно друг с другом.

Читать далее Термины и определения многозадачности

Как создавать потоки в ChibiOS.

Создание нового потока является наиболее распространенной задачей при использовании ОС реального времени. Давайте рассмотрим как это делается в ChibiOS/RT.
После инициализации ChibiOS/RT, используя chSysInit() у нас появляются два потока по умолчанию: Idle thread — этот поток имеет самый низкий приоритет в системе, так как он работает только тогда, когда другие потоки не используются либо спят. Эти потоки обычно переключает систему в режим пониженного энергопотребления и больше ничего не делают; Main thread — это главный поток, он выполняет основную функцию main() при запуске. Основной поток создается на уровне NORMALPRIO и он может изменить свой приоритет, если требуется.
Читать далее Как создавать потоки в ChibiOS.

Использование semaphore, mutex, event и msg

NOTE:

  • mutex – используют для доступа к разделяемому ресурсу несколькими задачами. Когда одна задача захватила mutex и использует разделяемый ресурс, вторая не может захватить mutex и использовать разделяемый ресурс. Вторая задача будет находиться в ожидании освобождения mutex первой задачей. И как только mutexбудет освобожден, вторая задача сможет его захватить и использовать разделяемый ресурс.
  • msg — используют для обмена данными между задачами. Note: Глобальные переменные не используют т.к. несколько задач одновременно могут получить доступ к ним, что может привести к ошибке. Либо доступ к этим глобальным переменным нужно выносить в критическую секцию, в которой планирование задач запрещено.
  • event – используют для того чтобы сообщить задаче, что произошло какое-то событие. Note: использование похоже на семафоры в режиме оповещения (сигнала) о том, что произошло событие.
  • semaphore – существует два варианта использования семафора:

Читать далее Использование semaphore, mutex, event и msg

Первое приложение на ChibiOS, мигаем светодиодом

Приложение BLINKER, версия ChibiOS 2.x.
Настало время написать первое приложение на ChibiOS под STM.
Для этого создадим файл main.c и начнём.

Читать далее Первое приложение на ChibiOS, мигаем светодиодом