https://rtic.rs/dev/book/ru/ Конкурентный фреймворк для создания систем реального времени #Rust , #RTIC , #RTOS
Учебные пособия, самоучители18+Real-Time Interrupt-driven Concurrency
Конкурентный фреймворк для создания систем реального времени
Эта книга содержит документацию пользовательского уровня о фреймворке Real-Time Interrupt-driven Concurrency (RTIC). Справочник по API можно найти здесь
.Также известен как Real-Time For the Masses.
Это документация по RTIC версии v0.6.x; за документацией по другим версиям:
• v0.5.x сюда
.• v0.4.x сюда
.• Задачи
как единица конкуренции 1. Задачи могут• Передача сообщений
между задачами. Если точнее, сообщения можно передавать программным задачам в момент вызова.• Очередь таймера
2. Программные задачи можно планировать на запуск в определенный момент в будущем. Эту возможность можно использовать для создания периодических задач.• Поддержка приоритета задач, и, как результат, вытесняющей многозадачности
.• Эффективное, избавленное от гонок данных, разделение ресурсов
благодаря легкому разбиению на• Выполнение без Deadlock
, гарантируемое на этапе компиляции. Данная гарантия строже, чем та, что предоставляется стандартный абтракцией Mutex.• Минимальные расходы на диспетчеризацию
. Диспетчер задач иммет минимальную программную базу; основная работа по диспетчеризации происходит аппаратно.• Высокоэффективное использование памяти
: Все задачи разделяют единый стек вызовов и отсутствует ресурсоемкая зависисмость от динамического аллокатора.• Все Cortex-M устройства полностью поддерживаются
.• К такой модели задач можно применять так называемый анализ WCET (Наихудшего времени выполнения), а также техники анализа диспетчеризации. (Хотя мы еще не разработали дружественный к Rust'у инструментарий для этого.)
• Приложения должны быть написаны в редакции 2018.
Присоединяйтесь к нам, чтобы говорить о RTIC в Matrix-комнате
.Записи еженедельных собраний можно найти в HackMD
Новые возможности и большие изменения следует проводить через процесс RFC в соответствующем RFC-репозитории
.Этот крейт основан на языке Real-Time For the Masses
, созданном Embedded Systems group в Техническом Университете Luleå, под руководством Prof. Per Lindgren.1
Eriksson, J., Häggström, F., Aittamaa, S., Kruglyak, A., & Lindgren, P. (2013, June). Real-time for the masses, step 1: Programming API and static priority SRP kernel primitives. In Industrial Embedded Systems (SIES), 2013 8th IEEE International Symposium on (pp. 110-113). IEEE.
2
Lindgren, P., Fresk, E., Lindner, M., Lindner, A., Pereira, D., & Pinho, L. M. (2016). Abstract timers and their implementation onto the arm cortex-m family of mcus. ACM SIGBED Review, 13(1), 48-53.
Все исходные тексты (включая примеры кода) лицензированы под одной из лицензий:
• Apache License, Version 2.0 (LICENSE-APACHE
или https://www.apache.org/licenses/LICENSE-2.0)• MIT license (LICENSE-MIT
или https://opensource.org/licenses/MIT)на ваш выбор.
Текст книги лицензирован по условиям лицензий Creative Commons CC-BY-SA v4.0 (LICENSE-CC-BY-SA
или https://creativecommons.org/licenses/by-sa/4.0/legalcode).Если вы не укажете этого отдельно, любой вклад, который вы предоставите в эту работу, как указано в тексте лицензии Apache-2.0, будет лицензирован по условиям, указанным выше, без каких-либо дополнительных условий.
В этой части книги фреймворк Real-Time Interrupt-driven Concurrency (RTIC) представляется новым пользователям путем прохода по примерам от простых к более сложным.
Все примеры в этой части книги можно найти в репозитарии
проекта. Большинство из них можно пройти, запустив их на эмуляторе QEMU без специального оборудования.Для запуска примеров на вашем ПК, вам понадобится программа qemu-system-arm. В the embedded Rust book
есть инструкции по настройке среды для эмбеддед разработке, в том числе QEMU.Ниже представлены примеры использования RTIC (RTFM) в реальных проектах.