はじめに
The Embedded Rust Book へようこそ。これは、マイクロコントローラのような「ベアメタル」の組み込みシステムで Rust Programming Language を使うための入門書です。
Embedded Rust はどのような人向けか
Embedded Rust は、Rust 言語が提供するより高水準な概念と安全性の保証を活用しながら、組み込みプログラミングを行いたいすべての人のためのものです。 (Who Rust Is For も参照してください)
範囲
この本の目標は次のとおりです。
-
開発者が組み込み Rust 開発をすぐに始められるようにすること。つまり、開発環境をどのように セットアップするかです。
-
Rust を組み込み開発に使うための 現在の ベストプラクティスを共有すること。つまり、 より正しい組み込みソフトウェアを書くために Rust 言語の機能をどのように最適に 使うかです。
-
場合によってはクックブックとして機能すること。たとえば、単一の プロジェクトで C と Rust をどのように混在させるのか、ということです。
この本はできる限り汎用的であろうとしていますが、読者と執筆者の両方にとって物事を簡単にするために、 すべての例で ARM Cortex-M アーキテクチャを使用しています。ただし、この本は読者がこの 特定のアーキテクチャに精通していることを前提としておらず、必要に応じてこのアーキテクチャに特有の 詳細を説明します。
本書の対象読者
本書は、組み込みの経験がある人、または Rust の経験がある人のいずれにも向けて書かれていますが、 私たちは、組み込み Rust プログラミングに興味がある人なら誰でもこの本から何かを得られると考えています。事前知識がまったくない人には、 「前提と事前条件」セクションを読み、不足している知識を補うことで、本書からより多くを得て 読書体験を向上させることを勧めます。「その他のリソース」セクションでは、 補いたいと思うトピックに関するリソースを見つけることができます。
前提と事前条件
- Rust Programming Language を問題なく使いこなせ、デスクトップ環境で Rust アプリケーションを 書き、実行し、デバッグした経験があること。また、本書は Rust 2018 を対象としているため、2018 edition の慣用表現にも精通している必要が あります。
- C、C++、Ada などの別の言語で組み込みシステムを開発・デバッグすることに慣れており、
次のような概念に精通していること:
- クロスコンパイル
- メモリマップドペリフェラル
- 割り込み
- I2C、SPI、シリアルなどの一般的なインターフェース
その他のリソース
上で述べた内容に不慣れな場合や、この本で触れられている特定のトピックについてさらに詳しい情報が欲しい場合は、これらのリソースのいくつかが役立つかもしれません。
| トピック | リソース | 説明 |
|---|---|---|
| Rust | Rust Book | まだ Rust に十分慣れていない場合は、この本を読むことを強く勧めます。 |
| Rust, 組み込み | Discovery Book | 組み込みプログラミングを一度も行ったことがない場合は、この本のほうがよりよい出発点かもしれません |
| Rust, 組み込み | Embedded Rust Bookshelf | ここでは、Rust の Embedded Working Group が提供するいくつかの他のリソースを見つけることができます。 |
| Rust, 組み込み | Embedonomicon | Rust で組み込みプログラミングを行う際の細かな実践的詳細。 |
| Rust, 組み込み | embedded FAQ | 組み込みコンテキストにおける Rust に関するよくある質問。 |
| Rust, 組み込み | Comprehensive Rust 🦀: Bare Metal | ベアメタル Rust 開発に関する 4 日間の講義用教材 |
| 割り込み | Interrupt | - |
| メモリマップド IO/ペリフェラル | Memory-mapped I/O | - |
| SPI, UART, RS232, USB, I2C, TTL | Stack Exchange about SPI, UART, and other interfaces | - |
翻訳
この本は、寛大なボランティアによって翻訳されています。ここにあなたの 翻訳を掲載したい場合は、追加する PR を送ってください。
この本の使い方
この本は一般に、最初から最後まで順に読むことを前提としています。後の 章は前の章の概念の上に成り立っており、前の章ではあるトピックの詳細まで 掘り下げず、後の章でそのトピックを再び扱うことがあります。
この本では、掲載されている例の大半で STMicroelectronics の STM32F3DISCOVERY 開発ボードを 使用します。このボードは ARM Cortex-M アーキテクチャに基づいており、このアーキテクチャに 基づくほとんどの CPU では基本機能は同じですが、ペリフェラルやその他の マイクロコントローラの実装の詳細はベンダーごとに異なり、同じ ベンダーのマイクロコントローラファミリ間でさえしばしば異なります。
このため、本書の例を追いながら学ぶ目的で STM32F3DISCOVERY 開発ボードを購入することを勧めます。
本書への貢献
この本の作業は this repository で調整されており、主に resources team によって開発されています。
この本の手順に従うのが難しい、あるいは本のどこかの セクションが十分に明確でない、または追いにくいと感じた場合、それはバグであり、 本書の the issue tracker に報告すべきです。
誤字脱字の修正や新しい内容の追加を行う Pull Request は大歓迎です!
この資料の再利用
この本は、次のライセンスの下で配布されています。
- この本に含まれるコードサンプルおよび独立した Cargo プロジェクトは、MIT License と Apache License v2.0 の両方の条件の下でライセンスされています。
- この本に含まれる本文、画像、および図は、Creative Commons の CC-BY-SA v4.0 ライセンスの条件の下でライセンスされています。
要するに: この本のテキストや画像をあなたの作品で使いたい場合、次のことが必要です。
- 適切なクレジットを表示すること(つまり、スライドでこの本に言及し、関連するページへのリンクを提供すること)
- CC-BY-SA v4.0 ライセンスへのリンクを提供すること
- 何らかの形で資料を変更した場合はそれを明示し、その変更した資料を同じライセンスの下で利用可能にすること
また、本書が役に立ったと感じたら、ぜひお知らせください!