Как портировать код с 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

STM32: базовые таймеры

В статье приведено описание таймеров 32-разрядных ARM-микроконтроллеров серии STM32 от компании STMicroelectronics. Рассмотрена архитектура и состав регистров базовых таймеров, а также приведены практические примеры программ.

Для любого микроконтроллера тай-мер является одним из важнейших узлов, который позволяет очень точно отсчитывать интервалы времени, счи-тать импульсы, поступающие на вхо-ды, генерировать внутренние преры-вания, формировать сигналы с широт-но-импульсной модуляцией (ШИМ) и поддерживать процессы прямого доступа к памяти (ПДП).

Читать далее STM32: базовые таймеры

Настройка источников синхронизации STM32

Конфигурация

STM32_SW

Основной источник синхронизации.

Если источником выбрана не PLL, следовательно она не будет инициализирована и запущена.

Возможные варианты:

§ STM32_SW_HSI — внутренний источник синхронизации;
§ STM32_SW_HSE — внешний источник синхронизации;
§ STM32_SW_PLL — ФАПЧ в качестве источника.

По-умолчанию будет использоваться STM32_SW_PLL.

Читать далее Настройка источников синхронизации STM32

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

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

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