(ru) changes according review

This commit is contained in:
Andrey Zgarbul 2019-02-09 08:48:12 +03:00
parent 5ef1f2088a
commit 0fcc31f58e
7 changed files with 21 additions and 21 deletions

View file

@ -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)

View file

@ -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

View file

@ -15,7 +15,7 @@
В примере ниже два обработчика прерываний имеют доступ к одному и тому же ресурсу.
Никакого `Mutex` в этом случае не требуется, потому что оба обработчика запускаются
с обним приоритетом и никакого вытеснения быть не может.
с одним приоритетом и никакого вытеснения быть не может.
К ресурсу `SHARED` можно получить доступ только из этих двух прерываний.
``` rust

View file

@ -11,9 +11,9 @@
Заметьте, что когда Вы используете атрибут `Singleton`, Вым нужно иметь
`owned_singleton` в зависимостях.
Ниже, в примере, использован атрибут `Singleton` на куске памяти, а затем
использован экземпляр одиночки как фиксированный по размеру пул памяти,
используя одну из абстракций [`alloc-singleton`].
В примере ниже атрибутом `Singleton` аннотирован массив памяти,
а экземпляр одиночки использован как фиксированный по размеру пул памяти
с помощью одной из абстракций [`alloc-singleton`].
[`alloc-singleton`]: https://crates.io/crates/alloc-singleton

View file

@ -49,7 +49,7 @@ $ cargo run --example message
зарезервирует достаточно памяти для каждого контекста, чтобы можно было вызвать
каждую задачу как минимум единожды. Это разумно по умолчанию, но
"внутреннюю" ёмкость каждой задачи можно контролировать используя аргумент
`capacicy` атрибута `task`.
`capacity` атрибута `task`.
В примере ниже установлена ёмкость программной задачи `foo` на 4. Если ёмкость
не определена, тогда второй вызов `spawn.foo` в `UART0` вызовет ошибку.

View file

@ -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

View file

@ -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`-ресурсах.