diff options
Diffstat (limited to 'book/ru/src')
| -rw-r--r-- | book/ru/src/README_RU.md | 10 | ||||
| -rw-r--r-- | book/ru/src/SUMMARY.md | 2 | ||||
| -rw-r--r-- | book/ru/src/by-example.md | 6 | ||||
| -rw-r--r-- | book/ru/src/by-example/app.md | 20 | ||||
| -rw-r--r-- | book/ru/src/by-example/new.md | 12 | ||||
| -rw-r--r-- | book/ru/src/by-example/resources.md | 8 | ||||
| -rw-r--r-- | book/ru/src/by-example/tasks.md | 6 | ||||
| -rw-r--r-- | book/ru/src/by-example/timer-queue.md | 8 | ||||
| -rw-r--r-- | book/ru/src/by-example/tips.md | 6 | ||||
| -rw-r--r-- | book/ru/src/by-example/types-send-sync.md | 4 | ||||
| -rw-r--r-- | book/ru/src/preface.md | 6 |
11 files changed, 44 insertions, 44 deletions
diff --git a/book/ru/src/README_RU.md b/book/ru/src/README_RU.md index 921837a..4cc24e6 100644 --- a/book/ru/src/README_RU.md +++ b/book/ru/src/README_RU.md @@ -1,4 +1,4 @@ -# Real Time For the Masses +# Real-Time Interrupt-driven Concurrency Конкурентный фреймворк для создания систем реального времени. @@ -43,17 +43,17 @@ - Программы нужно писать используя 2018 edition. -## [User documentation](https://japaric.github.io/cortex-m-rtfm/book) +## [User documentation](https://japaric.github.io/cortex-m-rtic/book) -## [API reference](https://japaric.github.io/cortex-m-rtfm/api/rtfm/index.html) +## [API reference](https://japaric.github.io/cortex-m-rtic/api/rtic/index.html) ## Благодарности -Эта библиотека основана на [языке RTFM][rtfm-lang], созданном Embedded +Эта библиотека основана на [языке RTIC][rtic-lang], созданном Embedded Systems group в [Техническом Университете Luleå][ltu], под рук. [Prof. Per Lindgren][per]. -[rtfm-lang]: http://www.rtfm-lang.org/ +[rtic-lang]: http://www.rtic-lang.org/ [ltu]: https://www.ltu.se/?l=en [per]: https://www.ltu.se/staff/p/pln-1.11258?l=en diff --git a/book/ru/src/SUMMARY.md b/book/ru/src/SUMMARY.md index 7831e41..7df745e 100644 --- a/book/ru/src/SUMMARY.md +++ b/book/ru/src/SUMMARY.md @@ -1,7 +1,7 @@ # Summary [Введение](./preface.md) -- [RTFM в примерах](./by-example.md) +- [RTIC в примерах](./by-example.md) - [Атрибут `app`](./by-example/app.md) - [Ресурсы](./by-example/resources.md) - [Задачи](./by-example/tasks.md) diff --git a/book/ru/src/by-example.md b/book/ru/src/by-example.md index c7a2a4a..0e0fde2 100644 --- a/book/ru/src/by-example.md +++ b/book/ru/src/by-example.md @@ -1,13 +1,13 @@ -# RTFM в примерах +# RTIC в примерах -Эта часть книги представляет фреймворк Real Time For the Masses (RTFM) +Эта часть книги представляет фреймворк Real-Time Interrupt-driven Concurrency (RTIC) новым пользователям через примеры с растущей сложностью. Все примеры в этой книге можно найти в [репозитории] проекта на GitHub, и большинство примеров можно запустить на эмуляторе QEMU, поэтому никакого специального оборудования не требуется их выполнять. -[репозитории]: https://github.com/japaric/cortex-m-rtfm +[репозитории]: https://github.com/japaric/cortex-m-rtic Чтобы запустить примеры на Вашем ноутбуке / ПК, Вам нужна программа `qemu-system-arm`. Инструкции по настройке окружения для разработки diff --git a/book/ru/src/by-example/app.md b/book/ru/src/by-example/app.md index 884257d..04dd5b2 100644 --- a/book/ru/src/by-example/app.md +++ b/book/ru/src/by-example/app.md @@ -1,26 +1,26 @@ # The `app` attribute -Это наименьшая возможная программа на RTFM: +Это наименьшая возможная программа на RTIC: ``` rust {{#include ../../../../examples/smallest.rs}} ``` -Все программы на RTFM используют атрибут [`app`] (`#[app(..)]`). Этот атрибут +Все программы на RTIC используют атрибут [`app`] (`#[app(..)]`). Этот атрибут нужно применять к `const`-элементам, содержащим элементы. Атрибут `app` имеет обязательный аргумент `device`, в качестве значения которому передается *путь*. Этот путь должен указывать на библиотеку *устройства*, сгенерированную с помощью [`svd2rust`] **v0.14.x**. Атрибут `app` развернется в удобную точку входа, поэтому нет необходимости использовать атрибут [`cortex_m_rt::entry`]. -[`app`]: ../../../api/cortex_m_rtfm_macros/attr.app.html +[`app`]: ../../../api/cortex_m_rtic_macros/attr.app.html [`svd2rust`]: https://crates.io/crates/svd2rust [`cortex_m_rt::entry`]: ../../../api/cortex_m_rt_macros/attr.entry.html > **ОТСТУПЛЕНИЕ**: Некоторые из вас удивятся, почему мы используем ключевое слово `const` как > модуль, а не правильное `mod`. Причина в том, что использование атрибутов на > модулях требует feature gate, который требует ночную сборку. Чтобы заставить -> RTFM работать на стабильной сборке, мы используем вместо него слово `const`. +> RTIC работать на стабильной сборке, мы используем вместо него слово `const`. > Когда большая часть макросов 1.2 стабилизируются, мы прейдем от `const` к `mod` и в конце концов в атрибуту уровне приложения (`#![app]`). ## `init` @@ -32,13 +32,13 @@ Функция `init` запустится *с отключенными прерываниями* и будет иметь эксклюзивный доступ к периферии Cortex-M и специфичной для устройства периферии через переменные `core` and `device`, которые внедряются в область видимости `init` атрибутом `app`. -Не вся периферия Cortex-M доступна в `core`, потому что рантайм RTFM принимает владение -частью из неё -- более подробно см. структуру [`rtfm::Peripherals`]. +Не вся периферия Cortex-M доступна в `core`, потому что рантайм RTIC принимает владение +частью из неё -- более подробно см. структуру [`rtic::Peripherals`]. Переменные `static mut`, определённые в начале `init` будут преобразованы в ссылки `&'static mut` с безопасным доступом. -[`rtfm::Peripherals`]: ../../api/rtfm/struct.Peripherals.html +[`rtic::Peripherals`]: ../../api/rtic/struct.Peripherals.html Пример ниже показывает типы переменных `core` и `device` и демонстрирует безопасный доступ к переменной `static mut`. @@ -85,7 +85,7 @@ $ cargo run --example idle Как Вы бы сделали с помощью библиотеки `cortex-m-rt`, Вы можете использовать атрибуты `interrupt` и `exception` внутри псевдо-модуля `app`, чтобы определить обработчики -прерываний и исключений. В RTFM, мы называем обработчики прерываний и исключений +прерываний и исключений. В RTIC, мы называем обработчики прерываний и исключений *аппаратными* задачами. ``` rust @@ -96,6 +96,6 @@ $ cargo run --example idle $ cargo run --example interrupt {{#include ../../../../ci/expected/interrupt.run}}``` -До сих пор программы RTFM, которые мы видели не отличались от программ, которые +До сих пор программы RTIC, которые мы видели не отличались от программ, которые можно написать, используя только библиотеку `cortex-m-rt`. В следующем разделе -мы начнем знакомиться с функционалом, присущим только RTFM. +мы начнем знакомиться с функционалом, присущим только RTIC. diff --git a/book/ru/src/by-example/new.md b/book/ru/src/by-example/new.md index 688935e..cba84c1 100644 --- a/book/ru/src/by-example/new.md +++ b/book/ru/src/by-example/new.md @@ -1,6 +1,6 @@ # Создание нового проекта -Теперь, когда Вы изучили основные возможности фреймворка RTFM, Вы можете +Теперь, когда Вы изучили основные возможности фреймворка RTIC, Вы можете попробовать его использовать на Вашем оборудовании следуя этим инструкциям. 1. Создайте экземпляр из шаблона [`cortex-m-quickstart`]. @@ -36,20 +36,20 @@ $ cargo add lm3s6965 --vers 0.1.3 $ rm memory.x build.rs ``` -3. Добавьте библиотеку `cortex-m-rtfm` как зависимость, и если необходимо, +3. Добавьте библиотеку `cortex-m-rtic` как зависимость, и если необходимо, включите опцию `timer-queue`. ``` console -$ cargo add cortex-m-rtfm --allow-prerelease --upgrade=none +$ cargo add cortex-m-rtic --allow-prerelease --upgrade=none ``` -4. Напишите программу RTFM. +4. Напишите программу RTIC. -Здесь я буду использовать пример `init` из библиотеки `cortex-m-rtfm`. +Здесь я буду использовать пример `init` из библиотеки `cortex-m-rtic`. ``` console $ curl \ - -L https://github.com/japaric/cortex-m-rtfm/raw/v0.4.0-beta.1/examples/init.rs \ + -L https://github.com/japaric/cortex-m-rtic/raw/v0.4.0-beta.1/examples/init.rs \ > src/main.rs ``` diff --git a/book/ru/src/by-example/resources.md b/book/ru/src/by-example/resources.md index 746363f..b53ef40 100644 --- a/book/ru/src/by-example/resources.md +++ b/book/ru/src/by-example/resources.md @@ -8,7 +8,7 @@ достаточно информации, чтобы оптимизировать доступ к разделяемым данным. Атрибут `app` имеет полную картину приложения, поэтому может оптимизировать доступ к -`static`-переменным. В RTFM мы обращаемся к `static`-переменным, объявленным внутри +`static`-переменным. В RTIC мы обращаемся к `static`-переменным, объявленным внутри псевдо-модуля `app` как к *ресурсам*. Чтобы получить доступ к ресурсу, контекст (`init`, `idle`, `interrupt` или `exception`) должен сначала определить аргумент `resources` в соответствующем атрибуте. @@ -45,13 +45,13 @@ $ cargo run --example resource критические секции не нужны для обработчика с наивысшим приоритетом, имеющим доступ к ресурсу. -API критической секции, предоставляемое фреймворком RTFM (см. [`Mutex`]), +API критической секции, предоставляемое фреймворком RTIC (см. [`Mutex`]), основано на динамических приоритетах вместо отключения прерываний. Из этого следует, что критические секции не будут допускать *запуск некоторых* обработчиков, включая все соперничающие за ресурс, но будут позволять запуск обработчиков с большим приоритетом не соперничащих за ресурс. -[`Mutex`]: ../../../api/rtfm/trait.Mutex.html +[`Mutex`]: ../../../api/rtic/trait.Mutex.html В примере ниже у нас есть 3 обработчика прерываний с приоритетами от одного до трех. Два обработчика с низким приоритетом соперничают за ресурс `SHARED`. @@ -61,7 +61,7 @@ API критической секции, предоставляемое фрей с наивысшим приоритетом может свободно вытеснять критическую секцию, созданную обработчиком с низшим приоритетом. -[`lock`]: ../../../api/rtfm/trait.Mutex.html#method.lock +[`lock`]: ../../../api/rtic/trait.Mutex.html#method.lock ``` rust {{#include ../../../../examples/lock.rs}} diff --git a/book/ru/src/by-example/tasks.md b/book/ru/src/by-example/tasks.md index 355bd4e..3782804 100644 --- a/book/ru/src/by-example/tasks.md +++ b/book/ru/src/by-example/tasks.md @@ -1,12 +1,12 @@ # Программные задачи -RTFM обрабатывает прерывания и исключения как *аппаратные* задачи. Аппаратные +RTIC обрабатывает прерывания и исключения как *аппаратные* задачи. Аппаратные задачи могут вызываться устройством в ответ на события, такие как нажатие кнопки. -RTFM также поддерживает *программные* задачи, порождаемые программой из любого +RTIC также поддерживает *программные* задачи, порождаемые программой из любого контекста выполнения. Программным задачам также можно назначать приоритет и диспетчеризовать из -обработчиков прерываний. RTFM требует определения свободных прерываний в блоке +обработчиков прерываний. RTIC требует определения свободных прерываний в блоке `extern`, когда используются программные задачи; эти свободные прерывания будут использованы, чтобы диспетчеризовать программные задачи. Преимущество программных задач перед аппаратными в том, что на один обработчик прерывания можно назначить множество задач. diff --git a/book/ru/src/by-example/timer-queue.md b/book/ru/src/by-example/timer-queue.md index d747731..3c35e29 100644 --- a/book/ru/src/by-example/timer-queue.md +++ b/book/ru/src/by-example/timer-queue.md @@ -1,6 +1,6 @@ # Очередь таймера -Когда включена опция `timer-queue`, фреймворк RTFM включает +Когда включена опция `timer-queue`, фреймворк RTIC включает *глобальную очередь таймера*, которую приложения могут использовать, чтобы *планировать* программные задачи на запуск через некоторое время в будущем. @@ -9,16 +9,16 @@ планируется, момент ([`Instant`]), в который задачу нужно запустить, нужно передать как первый аргумент вызова `schedule`. -[`Instant`]: ../../../api/rtfm/struct.Instant.html +[`Instant`]: ../../../api/rtic/struct.Instant.html -Рантайм RTFM включает монотонный, растущий только вверх, 32-битный таймер, +Рантайм RTIC включает монотонный, растущий только вверх, 32-битный таймер, значение которого можно запросить конструктором `Instant::now`. Время ([`Duration`]) можно передать в `Instant::now()`, чтобы получить `Instant` в будущем. Монотонный таймер отключен пока запущен `init`, поэтому `Instant::now()` всегда возвращает значение `Instant(0 /* циклов тактовой частоты */)`; таймер включается сразу перед включением прерываний и запуском `idle`. -[`Duration`]: ../../../api/rtfm/struct.Duration.html +[`Duration`]: ../../../api/rtic/struct.Duration.html В примере ниже две задачи планируются из `init`: `foo` и `bar`. `foo` - запланирована на запуск через 8 миллионов тактов в будущем. Кроме того, `bar` diff --git a/book/ru/src/by-example/tips.md b/book/ru/src/by-example/tips.md index 4a39cbc..249e8f4 100644 --- a/book/ru/src/by-example/tips.md +++ b/book/ru/src/by-example/tips.md @@ -22,8 +22,8 @@ $ cargo run --example generics ## Запуск задач из ОЗУ -Главной целью переноса описания программы на RTFM в атрибуты в -RTFM v0.4.x была возможность взаимодействия с другими атрибутами. +Главной целью переноса описания программы на RTIC в атрибуты в +RTIC v0.4.x была возможность взаимодействия с другими атрибутами. Напримерe, атрибут `link_section` можно применять к задачам, чтобы разместить их в ОЗУ; это может улучшить производительность в некоторых случаях. @@ -64,7 +64,7 @@ $ cargo nm --example ramfunc --release | grep ' bar::' ## `binds` -**ПРИМЕЧАНИЕ**: Требуется RTFM не ниже 0.4.2 +**ПРИМЕЧАНИЕ**: Требуется RTIC не ниже 0.4.2 Вы можете давать аппаратным задачам имена похожие на имена обычных задач. Для этого нужно использовать аргумент `binds`: Вы называете функцию diff --git a/book/ru/src/by-example/types-send-sync.md b/book/ru/src/by-example/types-send-sync.md index 77c9af0..8511889 100644 --- a/book/ru/src/by-example/types-send-sync.md +++ b/book/ru/src/by-example/types-send-sync.md @@ -19,7 +19,7 @@ ## `Send` [`Send`] - маркерный типаж (trait) для "типов, которые можно передавать через границы -потоков", как это определено в `core`. В контексте RTFM типаж `Send` необходим +потоков", как это определено в `core`. В контексте RTIC типаж `Send` необходим только там, где возможна передача значения между задачами, запускаемыми на *разных* приоритетах. Это возникает в нескольких случаях: при передаче сообщений, в совместно используемых `static mut` ресурсах и инициализации поздних ресурсов. @@ -41,7 +41,7 @@ ## `Sync` Похожая ситуация, [`Sync`] - маркерный типаж для "типов, на которых можно -ссылаться в разных потоках", как это определено в `core`. В контексте RTFM +ссылаться в разных потоках", как это определено в `core`. В контексте RTIC типаж `Sync` необходим только там, где возможны две или более задачи, запускаемые на разных приоритетах, чтобы захватить разделяемую ссылку на ресурс. Это возникает только совместно используемых `static`-ресурсах. diff --git a/book/ru/src/preface.md b/book/ru/src/preface.md index e9ed2a2..bfae004 100644 --- a/book/ru/src/preface.md +++ b/book/ru/src/preface.md @@ -1,11 +1,11 @@ -<h1 align="center">Real Time For the Masses</h1> +<h1 align="center">Real-Time Interrupt-driven Concurrency</h1> <p align="center">Конкурентный фреймворк для создания систем реального времени</p> # Введение -Эта книга содержит документацию уровня пользователя фреймворком Real Time For the Masses -(RTFM). Описание API можно найти [здесь](../../api/rtfm/index.html). +Эта книга содержит документацию уровня пользователя фреймворком Real-Time Interrupt-driven Concurrency +(RTIC). Описание API можно найти [здесь](../../api/rtic/index.html). {{#include README_RU.md:5:44}} |
