Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Введение

Добро пожаловать в книгу «Встраиваемый 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 и др.

Другие ресурсы

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

ТемаРесурсОписание
RustRust BookЕсли вы ещё не освоились с Rust, настоятельно рекомендуем прочитать эту книгу.
Rust, EmbeddedDiscovery BookЕсли вы никогда не занимались встраиваемым программированием, эта книга может стать лучшим стартом
Rust, EmbeddedEmbedded Rust BookshelfЗдесь вы найдёте другие ресурсы, подготовленные рабочей группой Rust Embedded.
Rust, EmbeddedEmbedonomiconПодробности и тонкости встраиваемого программирования на Rust.
Rust, Embeddedembedded FAQЧасто задаваемые вопросы о Rust в контексте встраиваемых систем.
Rust, EmbeddedComprehensive 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
  • Указать, если вы каким-либо образом изменили материал, и сделать свои изменения доступными по той же лицензии

Также, пожалуйста, сообщите нам, если эта книга оказалась для вас полезной!