rtic/README_ru.md
2021-08-03 22:40:33 +03:00

124 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Real-Time Interrupt-driven Concurrency
Конкурентный фреймворк для создания систем реального времени.
Также известный как Real-Time For the Masses.
[![crates.io](https://img.shields.io/crates/v/cortex-m-rtic)](https://crates.io/crates/cortex-m-rtic)
[![docs.rs](https://docs.rs/cortex-m-rtic/badge.svg)](https://docs.rs/cortex-m-rtic)
[![book](https://img.shields.io/badge/web-rtic.rs-red.svg?style=flat&label=book&colorB=d33847)](https://rtic.rs/)
[![rustc](https://img.shields.io/badge/rustc-1.36+-lightgray.svg)](https://github.com/rust-lang/rust/releases/tag/1.36.0)
[![matrix](https://img.shields.io/matrix/rtic:matrix.org)](https://matrix.to/#/#rtic:matrix.org)
[![Meeting notes](https://hackmd.io/badge.svg)](https://hackmd.io/@xmis9JvZT8Gvo9lOEKyZ4Q/SkBJKsjuH)
## Возможности
- **Задачи** как единица конкуренции [^1]. Задачи могут *запускаться от событий*
(срабатывать в ответ на асинхронные воздействия) или вызываться по запросу программы.
- **Передача сообщений** между задачами. Если точнее, сообщения можно передавать
программным задачам в момент вызова.
- **Очередь таймера** [^2]. Программные задачи можно планировать на запуск в определенный
момент в будущем. Эту возможность можно использовать для создания периодических задач.
- Поддержка приоритета задач, и, как результат, **вытесняющей многозадачности**.
- **Эффективное, избавленное от гонок данных, разделение ресурсов** благодаря легкому
разбиению на *основанные на приоритетах* критические секции [^1].
- **Выполнение без Deadlock**, гарантируемое на этапе компиляции. Данная гарантия строже,
чем та, что предоставляется [стандартный абтракцией `Mutex`][std-mutex].
[std-mutex]: https://doc.rust-lang.org/std/sync/struct.Mutex.html
- **Минимальные расходы на диспетчеризацию**. Диспетчер задач иммет минимальную программную
базу; основная работа по диспетчеризации происходит аппаратно.
- **Высокоэффективное использование памяти**: Все задачи разделяют единый стек вызовов и
отсутствует ресурсоемкая зависисмость от динамического аллокатора.
- **Все Cortex-M устройства полностью поддерживаются**.
- К такой модели задач можно применять так называемый анализ WCET (Наихудшего времени выполнения),
а также техники анализа диспетчеризации. (Хотя мы еще не разработали дружественный к Rust'у
инструментарий для этого.)
## Требования
- Rust 1.51.0+
- Приложения должны быть написаны в редакции 2018.
## [Руководство пользователя](https://rtic.rs) - [(Версия в разработке)](https://rtic.rs/dev)
## [Документация пользователя](https://rtic.rs)
## [Справочник по API](https://rtic.rs/stable/api/)
## [Сборник примеров, предоставляемы сообществом][examples]
[examples]: https://github.com/rtic-rs/rtic-examples
## Чат
Присоединяйтесь к нам, чтобы говорить о RTIC [в Matrix-комнате][matrix-room].
Записи еженедельных собраний можно найти в [HackMD][hackmd]
[matrix-room]: https://matrix.to/#/#rtic:matrix.org
[hackmd]: https://hackmd.io/@xmis9JvZT8Gvo9lOEKyZ4Q/SkBJKsjuH
## Внести вклад
Новые возможности и большие изменения следует проводить через процесс RFC в
[соответствующем RFC-репозитории][rfcs].
[rfcs]: https://github.com/rtic-rs/rfcs
## Благодарности
Этот крейт основан на [языке Real-Time For the Masses][rtfm-lang], созданном Embedded
Systems group в [Техническом Университете Luleå][ltu], под руководством
[Prof. Per Lindgren][per].
[rtfm-lang]: http://www.rtfm-lang.org/
[ltu]: https://www.ltu.se/?l=en
[per]: https://www.ltu.se/staff/p/pln-1.11258?l=en
## Ссылки
[^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](LICENSE-APACHE) или
[https://www.apache.org/licenses/LICENSE-2.0][L1])
- MIT license ([LICENSE-MIT](LICENSE-MIT) или
[https://opensource.org/licenses/MIT][L2])
[L1]: https://www.apache.org/licenses/LICENSE-2.0
[L2]: https://opensource.org/licenses/MIT
на ваш выбор.
Текст книги лицензирован по условиям лицензий
Creative Commons CC-BY-SA v4.0 ([LICENSE-CC-BY-SA](LICENSE-CC-BY-SA) или
[https://creativecommons.org/licenses/by-sa/4.0/legalcode][L3]).
[L3]: https://creativecommons.org/licenses/by-sa/4.0/legalcode
### Условия участия
Если вы не укажете этого отдельно, любой вклад, который вы предоставите в эту работу,
как указано в тексте лицензии Apache-2.0, будет лицензирован по условиям,
указанным выше, без каких-либо дополнительных условий.