Введение
Добро пожаловать в книгу «Встраиваемый Rust» (The Embedded Rust Book) — вводное руководство по использованию языка программирования Rust во встраиваемых системах «bare metal», например на микроконтроллерах.
Для кого предназначен Embedded Rust
Embedded Rust предназначен для всех, кто хочет заниматься встраиваемым программированием и при этом пользоваться высокоуровневыми концепциями и гарантиями безопасности, которые даёт язык Rust. (См. также Для кого предназначен Rust)
Область применения
Цели этой книги:
-
Помочь разработчикам быстро освоить разработку на embedded Rust, то есть показать, как настроить среду разработки.
-
Поделиться актуальными лучшими практиками использования Rust во встраиваемой разработке, то есть показать, как лучше использовать возможности языка, чтобы писать более корректное встраиваемое ПО.
-
В некоторых случаях служить сборником рецептов, например: как смешать C и Rust в одном проекте?
Эта книга старается быть максимально общей, но чтобы облегчить жизнь и читателям, и авторам, все примеры в ней используют архитектуру ARM Cortex-M. При этом книга не предполагает, что читатель знаком с этой архитектурой, и там, где это нужно, объясняет её особенности.
Для кого эта книга
Книга рассчитана на тех, у кого есть либо опыт во встраиваемых системах, либо опыт работы с Rust. Однако мы уверены, что любой, кому интересно встраиваемое программирование на Rust, сможет извлечь из неё пользу. Если у вас нет предварительных знаний, мы советуем прочитать раздел «Предположения и предварительные требования» и восполнить недостающие знания, чтобы лучше усвоить материал книги. В разделе «Другие ресурсы» вы найдёте материалы по темам, которые могут вам понадобиться.
Предположения и предварительные требования
- Вы уверенно пользуетесь языком программирования Rust, писали, запускали и отлаживали приложения на Rust в настольной среде. Также вы должны быть знакомы с идиомами издания 2018 года, так как эта книга рассчитана на Rust 2018.
- Вы уверенно разрабатываете и отлаживаете встраиваемые системы на другом языке, например C, C++ или Ada, и знакомы с такими понятиями, как:
- кросс-компиляция;
- периферия, отображаемая в память;
- прерывания;
- распространённые интерфейсы, например I2C, SPI, Serial и др.
Другие ресурсы
Если вы не знакомы с чем-либо из перечисленного выше или хотите узнать больше о какой-либо теме, упомянутой в этой книге, вам могут пригодиться следующие ресурсы.
| Тема | Ресурс | Описание |
|---|---|---|
| Rust | Rust Book | Если вы ещё не освоились с Rust, настоятельно рекомендуем прочитать эту книгу. |
| Rust, Embedded | Discovery Book | Если вы никогда не занимались встраиваемым программированием, эта книга может стать лучшим стартом |
| Rust, Embedded | Embedded Rust Bookshelf | Здесь вы найдёте другие ресурсы, подготовленные рабочей группой Rust Embedded. |
| Rust, Embedded | Embedonomicon | Подробности и тонкости встраиваемого программирования на Rust. |
| Rust, Embedded | embedded FAQ | Часто задаваемые вопросы о Rust в контексте встраиваемых систем. |
| Rust, Embedded | Comprehensive Rust 🦀: Bare Metal | Учебные материалы для четырёхдневного курса по разработке на Rust для bare metal |
| Прерывания | Interrupt | - |
| Ввод-вывод и периферия, отображённые в память | Memory-mapped I/O | - |
| SPI, UART, RS232, USB, I2C, TTL | Вопрос на Stack Exchange о SPI, UART и других интерфейсах | - |
Переводы
Эта книга переведена добровольцами. Если вы хотите, чтобы ваш перевод был указан здесь, откройте PR с его добавлением.
Как пользоваться этой книгой
Эта книга в целом рассчитана на чтение от начала до конца. Более поздние главы опираются на понятия из предыдущих, а ранние главы могут не раскрывать тему полностью и возвращаются к ней в более поздних главах.
В большинстве примеров этой книги используется отладочная плата STM32F3DISCOVERY от STMicroelectronics. Эта плата основана на архитектуре ARM Cortex-M. Базовая функциональность у большинства процессоров на этой архитектуре одна и та же, однако периферия и другие детали реализации микроконтроллеров отличаются у разных производителей, а часто даже между семействами микроконтроллеров одного производителя.
Поэтому мы советуем приобрести плату STM32F3DISCOVERY, чтобы повторять примеры из книги.
Участие в работе над книгой
Работа над книгой ведётся в этом репозитории и в основном выполняется командой resources.
Если вам трудно следовать инструкциям из книги или какой-либо раздел кажется недостаточно понятным или сложным для восприятия, это ошибка, и о ней следует сообщить в трекере задач этой книги.
Pull request’ы с исправлениями опечаток и добавлением нового материала очень приветствуются!
Повторное использование материала
Эта книга распространяется по следующим лицензиям:
- Примеры кода и самостоятельные Cargo-проекты в этой книге распространяются по условиям лицензий MIT и Apache License v2.0.
- Написанный текст, изображения и диаграммы в этой книге распространяются по лицензии Creative Commons CC-BY-SA v4.0.
TL;DR: если вы хотите использовать наш текст или изображения в своей работе, вам нужно:
- Указать соответствующее авторство (например, упомянуть эту книгу на слайде и дать ссылку на нужную страницу)
- Привести ссылку на лицензию CC-BY-SA v4.0
- Указать, если вы каким-либо образом изменили материал, и сделать свои изменения доступными по той же лицензии
Также, пожалуйста, сообщите нам, если эта книга оказалась для вас полезной!