Немного о RTIC

Real-Time Interrupt-driven Concurrency (RTIC) - конкурентный фреймворк для создания систем реального времени.

Возможности

  • Задачи - единица конкуренции. Задачи могут запускаться по событию (в ответ на асинхронный стимул) или вызываться программно по желанию.

  • Передача сообщений между задачами. А именно, сообщения можно передавать программным задачам в момент вызова.

  • Очередь таймера. Программные задачи можно планировать на запуск в определенный момент в будущем. Это свойство можно использовать, чтобы реализовывать периодические задачи.

  • Поддержка приоритетов задач, и таким образом, вытесняющей многозадачности.

  • Эффективное, свободное от гонок данных разделение памяти через хорошо разграниченные критические секции на основе приоритетов.

  • Выполнение без взаимной блокировки задач, гарантированное на этапе компиляции. Это более сильная гарантия, чем предоставляемая стандартной абстракцией Mutex.

  • Минимальные затраты на диспетчеризацию. Диспетчер задач имеет минимальный след; основная часть работы по диспетчеризации делается аппаратно.

  • Высокоэффективное использование памяти: Все задачи используют общий стек вызовов и нет сильной зависимости от динамического распределителя памяти.

  • Все устройства Cortex-M полностью поддерживаются.

  • Эта модель задач поддается известному анализу методом WCET (наихудшего времени исполнения) и техникам анализа диспетчеризации. (Хотя мы еще не разработали для дружественных инструментов для этого).

Создание проекта с RTIC

В шаблоне уже имеется пример с RTIC для crabik, просто запустите в терминале:

cargo generate --git https://github.com/CrabikBoards/crabik-app-template.git --name crabik-rtic

При создании проекта у вас спросят Создать с использованием библеотеки RTIC?, по умолчанию ответ false, будет создан обычный проект который создавали ранее, если ответить true, то будет создан проект с использованием RTIC.

Примеры

Полное руководство доступно на Английском