Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,19 @@
| firmware | прошивка | |
| bootloader | загрузчик | |
| peripheral | периферия | |
| pin (физический) | вывод | не «пин» и не «контакт»; тип `Pin` не переводим |
| toolchain | тулчейн | |
| borrow checker | анализатор заимствований | |
| Cargo feature | feature-флаг | |
| register | регистр | |
| interrupt | прерывание | |
| polling | опрос | |
| linker | линкер | |
| duty cycle | коэффициент заполнения | для PWM |
| linker | компоновщик | |
| duty cycle | коэффициент заполнения | для ШИМ |
| buzzer | пищалка | |
| Future, Pin, Mutex, Send, Sync, PhantomData, newtype, typestate, UB | — | оставляем английскими |
| GPIO, HAL, PAC, BSP, NVIC, SPI, I2C, UART, PWM, ADC, BLE, Wi-Fi | — | оставляем английскими |
| ADC, DAC, PWM | АЦП, ЦАП, ШИМ | при первом упоминании добавляйте английскую расшифровку |
| GPIO, HAL, PAC, BSP, NVIC, SPI, I2C, UART, BLE, Wi-Fi | — | оставляем английскими |

Если нужного термина нет в таблице, посмотрите, как он переведён в других книгах сборника, и используйте тот же вариант.

Expand Down
178 changes: 89 additions & 89 deletions comprehensive-rust/po/ru.po

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions discovery-mb2/src/01-background/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

* *Отзывчивость:* для выполнения своей задачи некоторым встраиваемым системам нужно всегда реагировать в ограниченный промежуток времени (например, антиблокировочная система тормозов автомобиля). Если система не уложится в такой *срок*, может произойти катастрофический отказ. Такое требование называют «жёстким реальным временем» (hard real time), а встраиваемую систему, которая связана таким сроком, — «системой жёсткого реального времени». У компьютера общего назначения с ОС обычно много программных компонентов, которые делят между собой вычислительные ресурсы. Из-за этого труднее гарантировать выполнение программы в жёстких временных рамках.

* *Надёжность.* В системах с меньшим числом компонентов (как аппаратных, так и программных) меньше возможностей для сбоя!
* *Надёжность:* в системах с меньшим числом компонентов (как аппаратных, так и программных) меньше возможностей для сбоя!

* **Когда *не* стоит использовать микроконтроллер?**

Expand All @@ -42,7 +42,7 @@

Некоторые микроконтроллеры не имеют аппаратной поддержки операций с плавающей точкой. На таких устройствах сложение двух чисел одинарной точности может занять сотни тактов процессора.

Наконец, памяти у микроконтроллеров обычно немного. Её может быть всего 16 КБ для инструкций программы и 4 КБ для данных, что делает программирование для таких систем довольно непростым. Объём встроенной памяти на единицу стоимости и энергопотребления постоянно растёт, но процессор, с которым мы будем работать, по-прежнему располагает «всего лишь» 512 КБ памяти для инструкций и 256 КБ для данных — гораздо меньше, чем у «настоящего компьютера».
Наконец, памяти у микроконтроллеров обычно немного. Её может быть всего 16 КБ для инструкций программы и 4 КБ для данных, что делает программирование для таких систем довольно непростым. Объём встроенной памяти на единицу стоимости и энергопотребления постоянно растёт, но процессор, с которым мы будем работать, по-прежнему располагает «всего лишь» 512 КБ памяти для инструкций и 128 КБ для данных — гораздо меньше, чем у «настоящего компьютера».

* **Почему Rust, а не C?**

Expand Down
2 changes: 1 addition & 1 deletion discovery-mb2/src/03-setup/IDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
При редактировании конфигурации сборки IntelliJ вот несколько значений, отличающихся от стандартных:
* Нужно изменить команду. Когда книга предлагает выполнить `cargo embed FLAGS`, замените стандартное значение `run` на команду `embed FLAGS`,
* Нужно включить «Emulate terminal in output console». Иначе программа не сможет выводить текст в терминал.
* Убедитесь, что рабочий каталог — `microbit/src/N-name`, где `N-name` — каталог главы, которую вы читаете. Запускать из каталога `src` нельзя, так как в нём нет файла Cargo.
* Убедитесь, что рабочий каталог — `discovery-mb2/src/N-name`, где `N-name` — каталог главы, которую вы читаете. Запускать из каталога `src` нельзя, так как в нём нет файла Cargo.
2 changes: 1 addition & 1 deletion discovery-mb2/src/03-setup/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ cargo-embed 0.24.0 (git commit: crates.io)

Книга также содержит небольшие проекты на Rust, которые используются в разных главах. Проще всего воспользоваться ими, скачав исходный код книги. Сделать это можно одним из следующих способов:

- Откройте [репозиторий](https://github.com/r007/EmbeddedRust-Rus/tree/main/discovery-mb2), нажмите зелёную кнопку «Code», а затем «Download Zip».
- Откройте [репозиторий](https://github.com/r007/EmbeddedRust-Rus), нажмите зелёную кнопку «Code», а затем «Download ZIP». Книга находится в каталоге `discovery-mb2`.

- Склонируйте его с помощью `git` (если вы знаете `git`, он у вас, скорее всего, уже установлен) из того же репозитория, который указан выше для ZIP-архива.

Expand Down
2 changes: 1 addition & 1 deletion discovery-mb2/src/03-setup/linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ $ sudo pacman -S arm-none-eabi-gdb minicom libunwind

> **ПРИМЕЧАНИЕ** `arm-none-eabi-gdb` — это команда GDB, которой вы будете отлаживать программы для Arm Cortex-M.

Если для вашего дистрибутива нет пакетов [готового набора инструментов Arm](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads), скачайте файл «Linux 64-bit» и добавьте его каталог `bin` в `PATH`. Вот один из способов:
Если для вашего дистрибутива нет пакетов [готового тулчейна Arm](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads), скачайте файл «Linux 64-bit» и добавьте его каталог `bin` в `PATH`. Вот один из способов:

``` console
$ mkdir -p ~/local
Expand Down
2 changes: 1 addition & 1 deletion discovery-mb2/src/03-setup/verify.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Debugging RISC-V targets over SWD is not supported. For these targets, JTAG is t
Debugging Xtensa targets over SWD is not supported. For these targets, JTAG is the only supported protocol. Xtensa specific information cannot be printed.
```

Затем убедитесь, что вы находитесь в каталоге `src/03-setup` исходного кода книги, и выполните команды:
Затем убедитесь, что вы находитесь в каталоге `discovery-mb2/src/03-setup` исходного кода книги, и выполните команды:

```
$ rustup target add thumbv7em-none-eabihf
Expand Down
4 changes: 2 additions & 2 deletions discovery-mb2/src/04-meet-your-hardware/microbit-v2.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Nordic nRF52833 («nRF52», micro:bit v2)

Под нашим MCU находятся 73 крошечных металлических **пина** (это так называемый чип [aQFN73]). Эти пины соединены с **дорожками** — маленькими «дорогами», которые служат проводами, соединяющими компоненты на плате. MCU может динамически менять электрические свойства пинов. Это работает примерно как выключатель света: меняется то, как электрический ток проходит по цепи. Включая или выключая ток через конкретный пин, можно зажигать и гасить светодиод, подключённый к этому пину (через дорожки).
Под нашим MCU находятся 73 крошечных металлических **вывода** (это так называемый чип [aQFN73]). Эти выводы соединены с **дорожками** — маленькими «дорогами», которые служат проводами, соединяющими компоненты на плате. MCU может динамически менять электрические свойства выводов. Это работает примерно как выключатель света: меняется то, как электрический ток проходит по цепи. Включая или выключая ток через конкретный вывод, можно зажигать и гасить светодиод, подключённый к этому выводу (через дорожки).

Каждый производитель использует собственную схему обозначений, но по номеру детали часто можно узнать о компоненте многое. Номер детали нашего MCU — `N52833 QIAAA0 2024AL`. Невооружённым глазом его, скорее всего, не разглядеть, но он нанесён на чип. (Если у вас более поздняя ревизия MB2, номер может немного отличаться. Это не проблема, но часть `N52833` должна присутствовать.) Буква `N` в начале подсказывает, что деталь выпущена компанией [Nordic Semiconductor]. Найдя номер детали на их сайте, мы быстро попадаем на [страницу продукта]. Там мы узнаём, что главная особенность чипа — это «Bluetooth Low Energy и 2.4 GHz SoC» (SoC — «system on a chip», «система на кристалле»), что объясняет и RF в названии: RF — это радиочастота (radio frequency). Если немного поискать в документации чипа, то на [страницу продукта] ведёт ссылка на [спецификацию продукта]. В ней глава 10, «Ordering Information», посвящена расшифровке странного обозначения чипа. Там мы узнаём следующее:
Каждый производитель использует собственную схему обозначений, но по номеру детали часто можно узнать о компоненте многое. Номер детали нашего MCU — `N52833 QIAAA0 2024AL`. Невооружённым глазом его, скорее всего, не разглядеть, но он нанесён на чип. (Если у вас более поздняя ревизия MB2, номер может немного отличаться. Это не проблема, но часть `N52833` должна присутствовать.) Буква `N` в начале подсказывает, что деталь выпущена компанией [Nordic Semiconductor]. Найдя номер детали на их сайте, мы быстро попадаем на [страницу продукта]. Там мы узнаём, что главная особенность чипа — это «Bluetooth Low Energy и 2.4 GHz SoC» (SoC — «system on a chip», «система на кристалле»), что объясняет и RF в названии: RF — это радиочастота (radio frequency). Если немного поискать, на [странице продукта] обнаружится ссылка на [спецификацию продукта]. В ней глава 10, «Ordering Information», посвящена расшифровке странного обозначения чипа. Там мы узнаём следующее:

[aQFN73]: https://en.wikipedia.org/wiki/Flat_no-leads_package
[Nordic Semiconductor]: https://www.nordicsemi.com/
Expand Down
2 changes: 1 addition & 1 deletion discovery-mb2/src/04-meet-your-hardware/terminology.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

## Объединение уровней

Далее рассмотрим очень важную часть программного обеспечения в экосистеме Rust Embedded: [`embedded-hal`]. Как следует из названия, она относится ко второму уровню абстракции, с которым мы уже познакомились: к HAL. Идея [`embedded-hal`] — предоставить набор трейтов, описывающих поведение, которое обычно общее для всех реализаций конкретной периферии во всех HAL. Например, всегда ожидаешь функций, которые могут включать или выключать питание пина: например, чтобы включить и выключить светодиод на плате или что-то подобное.
Далее рассмотрим очень важную часть программного обеспечения в экосистеме Rust Embedded: [`embedded-hal`]. Как следует из названия, она относится ко второму уровню абстракции, с которым мы уже познакомились: к HAL. Идея [`embedded-hal`] — предоставить набор трейтов, описывающих поведение, которое обычно общее для всех реализаций конкретной периферии во всех HAL. Например, почти всегда нужны функции, которые включают и выключают вывод (скажем, чтобы зажечь и погасить светодиод на плате).

`embedded-hal` позволяет написать драйвер для какого-либо устройства, например датчика температуры, который можно использовать на любом чипе, для которого существует реализация трейтов [`embedded-hal`]. Этого добиваются, написав драйвер так, чтобы он опирался только на трейты [`embedded-hal`]. Такие драйверы называют *не зависящими от платформы* (platform-agnostic). К счастью для нас, драйверы, которые мы будем брать с `crates.io`, почти все не зависят от платформы.

Expand Down
6 changes: 3 additions & 3 deletions discovery-mb2/src/05-meet-your-software/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

В этой главе мы научимся собирать, запускать и отлаживать несколько *очень* простых программ. Цель — не углубляться в детали программирования MB2 на Rust (пока), а просто освоить сам процесс.

Сначала короткое пояснение об условных обозначениях, которые используются в остальной части книги. Предполагается, что вы получите копию всей книги с помощью команды:
Сначала короткое пояснение об условных обозначениях, которые используются в остальной части книги. Предполагается, что вы получите копию репозитория со всеми книгами сборника с помощью команды:

```
git clone https://github.com/r007/EmbeddedRust-Rus/tree/main/discovery-mb2
git clone https://github.com/r007/EmbeddedRust-Rus.git
```

«Исходный код» книги находится в `discovery-mb2/mdbook/src`. Зайдите туда в своей копии и осмотритесь. В каталоге каждой главы есть и исходный текст в Markdown, *и* полный исходный код всех программ этой главы. Когда мы упоминаем путь вида `src/main.rs`, имеется в виду место относительно главы, с которой вы работаете. Например, в вашем `discovery-mb2` есть файл `mdbook/src/05-meet-your-software/examples/init.rs`. В этой главе мы будем называть его просто `examples/init.rs`.
«Исходный код» книги находится в каталоге `discovery-mb2/src` этого репозитория. Зайдите туда в своей копии и осмотритесь. В каталоге каждой главы есть и исходный текст в Markdown, *и* полный исходный код всех программ этой главы. Когда мы упоминаем путь вида `src/main.rs`, имеется в виду место относительно главы, с которой вы работаете. Например, в вашей копии есть файл `discovery-mb2/src/05-meet-your-software/examples/init.rs`. В этой главе мы будем называть его просто `examples/init.rs`.

Есть два основных вида кода на Rust: исполняемые программы («binary») и библиотечный код («library»). Библиотечный код в этой книге большой роли играть не будет. Исходный код исполняемых программ может находиться в одном из нескольких мест:

Expand Down
Loading
Loading