mirror of
https://github.com/rtic-rs/rtic.git
synced 2025-01-23 17:49:04 +01:00
(ru) changes according review
This commit is contained in:
parent
5ef1f2088a
commit
0fcc31f58e
7 changed files with 21 additions and 21 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
[Введение](./preface.md)
|
||||
- [RTFM в примерах](./by-example.md)
|
||||
- [Атрибут `app](./by-example/app.md)
|
||||
- [Атрибут `app`](./by-example/app.md)
|
||||
- [Ресурсы](./by-example/resources.md)
|
||||
- [Задачи](./by-example/tasks.md)
|
||||
- [Очередь таймера](./by-example/timer-queue.md)
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
|
||||
Все примеры в этой книге можно найти в [репозитории] проекта на GitHub,
|
||||
и большинство примеров можно запустить на эмуляторе QEMU, поэтому никакого
|
||||
специальног оборудования не требуется to follow along.
|
||||
специального оборудования не требуется их выполнять.
|
||||
|
||||
[репозитории]: https://github.com/japaric/cortex-m-rtfm
|
||||
|
||||
Чтобы запустить примеры на Вашем ноутбуке / PC, Вам нужна программа
|
||||
`qemu-system-arm`. Посмотрите [the embedded Rust book] на предмет инструкций
|
||||
как настроить окружение для разработки встраиваемых устройств, в том числе QEMU.
|
||||
Чтобы запустить примеры на Вашем ноутбуке / ПК, Вам нужна программа
|
||||
`qemu-system-arm`. Инструкции по настройке окружения для разработки
|
||||
встраиваемых устройств, в том числе QEMU, Вы можете найти в [the embedded Rust book].
|
||||
|
||||
[the embedded Rust book]: https://rust-embedded.github.io/book/intro/install.html
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
В примере ниже два обработчика прерываний имеют доступ к одному и тому же ресурсу.
|
||||
Никакого `Mutex` в этом случае не требуется, потому что оба обработчика запускаются
|
||||
с обним приоритетом и никакого вытеснения быть не может.
|
||||
с одним приоритетом и никакого вытеснения быть не может.
|
||||
К ресурсу `SHARED` можно получить доступ только из этих двух прерываний.
|
||||
|
||||
``` rust
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
Заметьте, что когда Вы используете атрибут `Singleton`, Вым нужно иметь
|
||||
`owned_singleton` в зависимостях.
|
||||
|
||||
Ниже, в примере, использован атрибут `Singleton` на куске памяти, а затем
|
||||
использован экземпляр одиночки как фиксированный по размеру пул памяти,
|
||||
используя одну из абстракций [`alloc-singleton`].
|
||||
В примере ниже атрибутом `Singleton` аннотирован массив памяти,
|
||||
а экземпляр одиночки использован как фиксированный по размеру пул памяти
|
||||
с помощью одной из абстракций [`alloc-singleton`].
|
||||
|
||||
[`alloc-singleton`]: https://crates.io/crates/alloc-singleton
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ $ cargo run --example message
|
|||
зарезервирует достаточно памяти для каждого контекста, чтобы можно было вызвать
|
||||
каждую задачу как минимум единожды. Это разумно по умолчанию, но
|
||||
"внутреннюю" ёмкость каждой задачи можно контролировать используя аргумент
|
||||
`capacicy` атрибута `task`.
|
||||
`capacity` атрибута `task`.
|
||||
|
||||
В примере ниже установлена ёмкость программной задачи `foo` на 4. Если ёмкость
|
||||
не определена, тогда второй вызов `spawn.foo` в `UART0` вызовет ошибку.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Советы и хитрости
|
||||
|
||||
## Generics
|
||||
## Обобщенное программирование (Generics)
|
||||
|
||||
Ресурсы, совместно используемые двумя или более задачами реализуют трейт `Mutex`
|
||||
Ресурсы, совместно используемые двумя или более задачами, реализуют трейт `Mutex`
|
||||
во *всех* контекстах, даже в тех, где для доступа к данным не требуются
|
||||
критические секции. Это позволяет легко писать обобщенный код оперирующий
|
||||
ресурсами, который можно вызывать из различных задач. Вот такой пример:
|
||||
|
@ -20,12 +20,12 @@ $ cargo run --example generics
|
|||
к данным в разделяемых ресурсах, тогда Ваш код продолжит компилироваться,
|
||||
когда Вы измените приоритет задач.
|
||||
|
||||
## Запуск задач из RAM
|
||||
## Запуск задач из ОЗУ
|
||||
|
||||
Главной целью переноса описания программы на RTFM в атрибуты в
|
||||
RTFM v0.4.x была возможность взаимодействия с другими атрибутами.
|
||||
Напримерe, атрибут `link_section` можно применять к задачам, чтобы разместить
|
||||
из в RAM; это может улучшить производительность в некоторых случаях.
|
||||
их в ОЗУ; это может улучшить производительность в некоторых случаях.
|
||||
|
||||
> **ВАЖНО**: Обычно атрибуты `link_section`, `export_name` и `no_mangle`
|
||||
> очень мощные, но их легко использовать неправильно. Неверное использование
|
||||
|
@ -39,7 +39,7 @@ RTFM v0.4.x была возможность взаимодействия с др
|
|||
|
||||
[RFC]: https://github.com/rust-embedded/cortex-m-rt/pull/100
|
||||
|
||||
В примере ниже показано как разместить высокоприоритетную задачу `bar` в RAM.
|
||||
В примере ниже показано как разместить высокоприоритетную задачу `bar` в ОЗУ.
|
||||
|
||||
``` rust
|
||||
{{#include ../../../examples/ramfunc.rs}}
|
||||
|
@ -51,7 +51,7 @@ RTFM v0.4.x была возможность взаимодействия с др
|
|||
$ cargo run --example ramfunc
|
||||
{{#include ../../../ci/expected/ramfunc.run}}```
|
||||
|
||||
Можно посмотреть на вывод `cargo-nm`, чтобы убедиться, что `bar` расположен в RAM
|
||||
Можно посмотреть на вывод `cargo-nm`, чтобы убедиться, что `bar` расположен в ОЗУ
|
||||
(`0x2000_0000`), тогда как `foo` расположен во Flash (`0x0000_0000`).
|
||||
|
||||
``` console
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
|
||||
## `Send`
|
||||
|
||||
[`Send`] - маркерный трейт для "типов, которые можно передавать через границы
|
||||
потоков", как это определено в `core`. В контексте RTFM трейт `Send` необходим
|
||||
[`Send`] - маркерный типаж (trait) для "типов, которые можно передавать через границы
|
||||
потоков", как это определено в `core`. В контексте RTFM типаж `Send` необходим
|
||||
только там, где возможна передача значения между задачами, запускаемыми на
|
||||
*разных* приоритетах. Это возникает в нескольких случаях: при передаче сообщений,
|
||||
в совместно используемых `static mut` ресурсах и инициализации поздних ресурсов.
|
||||
|
@ -27,7 +27,7 @@
|
|||
[`Send`]: https://doc.rust-lang.org/core/marker/trait.Send.html
|
||||
|
||||
Атрибут `app` проверит, что `Send` реализован, где необходимо, поэтому Вам не
|
||||
стоит волноваться об этом. Более важно знать, где Вам *не* нужен трейт `Send`:
|
||||
стоит волноваться об этом. Более важно знать, где Вам *не* нужен типаж `Send`:
|
||||
в типах, передаваемых между задачами с *одинаковым* приоритетом. Это возникает
|
||||
в двух случаях: при передаче сообщений и в совместно используемых `static mut`
|
||||
ресурсах.
|
||||
|
@ -40,9 +40,9 @@
|
|||
|
||||
## `Sync`
|
||||
|
||||
Похожая ситуация, [`Sync`] - маркерный трейт для "типов, на которых можно
|
||||
Похожая ситуация, [`Sync`] - маркерный типаж для "типов, на которых можно
|
||||
ссылаться в разных потоках", как это определено в `core`. В контексте RTFM
|
||||
трейт `Sync` необходим только там, где возможны две или более задачи,
|
||||
типаж `Sync` необходим только там, где возможны две или более задачи,
|
||||
запускаемые на разных приоритетах, чтобы захватить разделяемую ссылку на
|
||||
ресурс. Это возникает только совместно используемых `static`-ресурсах.
|
||||
|
||||
|
|
Loading…
Reference in a new issue