介紹
歡迎來到《嵌入式 Rust 手冊》:一本介紹如何在「裸機」嵌入式系統(如微控制器)上使用 Rust 程式語言的入門書。
嵌入式 Rust 的適用對象
嵌入式 Rust 適合想進行嵌入式開發、同時享受 Rust 語言提供的高階概念與安全保證的人。(另見 Rust 的適用對象)
範疇
本書的目標是:
-
讓開發者快速上手嵌入式 Rust 開發。例如:如何設定開發環境。
-
分享使用 Rust 進行嵌入式開發的_當前_最佳實務。例如:如何善用 Rust 語言特性來寫出更正確的嵌入式軟體。
-
在某些情況下作為食譜。例如:如何在單一專案中混用 C 與 Rust?
本書力求通用,但為了讓讀者與作者更容易上手,所有範例都採用 ARM Cortex-M 架構。不過,本書不假設讀者熟悉該架構,並在需要時解釋其特定細節。
本書的讀者
本書面向具備嵌入式或 Rust 背景的人,但我們相信所有對嵌入式 Rust 感到好奇的人都能從本書中有所收穫。若你沒有相關先備知識,我們建議先閱讀「假設與先備條件」章節並補足不足,讓你從本書獲益更多並提升閱讀體驗。你也可查看「其他資源」章節,尋找你想補充的主題。
假設與先備條件
-
你已能熟練使用 Rust 程式語言,並在桌面環境撰寫、執行與除錯 Rust 應用程式。你也應熟悉 2018 edition 的慣例,因為本書以 Rust 2018 為目標。
-
你能以 C、C++ 或 Ada 等其他語言進行嵌入式系統開發與除錯,並熟悉以下概念:
- 交叉編譯
- 記憶體對映周邊
- 中斷
- I2C、SPI、序列埠等常見介面
其他資源
如果你對上述內容不熟悉,或想了解本書提及的特定主題,以下資源可能會有幫助。
| 話題 | 資源 | 描述 |
|---|---|---|
| Rust | Rust 手冊 | 若你尚未熟悉 Rust,我們強烈建議先閱讀此書。 |
| Rust、嵌入式 | Discovery 手冊 | 若你從未做過嵌入式開發,這本書可能是更好的起點 |
| Rust、嵌入式 | Embedded Rust Bookshelf | 在這裡可以找到 Rust 嵌入式工作群提供的其他資源。 |
| Rust、嵌入式 | Embedonomicon | 使用 Rust 進行嵌入式開發時的繁瑣細節。 |
| Rust、嵌入式 | 嵌入式 FAQ | 關於嵌入式情境中的 Rust 常見問題。 |
| Rust、嵌入式 | Comprehensive Rust 🦀:裸機 | 裸機 Rust 開發 1 日課程的教學教材 |
| 中斷 | 中斷 | - |
| 記憶體對映 I/O/周邊 | 記憶體對映 I/O | - |
| SPI、UART、RS232、USB、I2C、TTL | 關於 SPI、UART 與其他介面的 Stack Exchange 討論 | - |
翻譯
本書由熱心志工翻譯完成。若你希望你的翻譯列在此處,請開 PR 加入。
如何使用這本手冊
該手冊一般假設你從前往後閱讀。後續章節會建立在前面章節的概念之上,而前面章節可能不會深入某些話題,並在後續章節再回頭詳述。
本書多數範例會使用 STMicroelectronics 的 STM32F3DISCOVERY 開發板。此開發板基於 ARM Cortex-M 架構,雖然此架構的多數 CPU 基本功能相同,但不同廠商的微控制器周邊與其他實作細節各不相同,甚至同一廠商不同家族也可能不同。
因此,我們建議購買 STM32F3DISCOVERY 開發板來跟著本書範例操作。
為本書做出貢獻
如果你在跟著本書指引時遇到困難,或發現某些章節不夠清楚或難以理解,那就是問題,應在本書的議題追蹤器 回報。
非常歡迎修正錯字與新增內容的 Pull Request!
重複使用本資料
本書以以下授權條款釋出:
- 本書包含的程式碼範例與獨立的 Cargo 專案同時採用 MIT 授權 與 Apache License v2.0 授權。
- 本書的文字、圖片與圖表採用 Creative Commons CC-BY-SA v4.0 授權。
TL;DR:若你想在作品中使用我們的文字或圖片,你需要:
- 給予適當的引用(例如在投影片中提到本書,並提供相關頁面的連結)
- 提供 CC-BY-SA v4.0 授權連結
- 說明是否對素材做過任何變更,並將你對素材的修改以相同授權釋出
如果你覺得本書有幫助,也請務必讓我們知道!