歡迎瞭解 Rust 裸機開發
這個為期一天的獨立課程會介紹 Rust 裸機開發,適合熟悉 Rust 基本概念的開發人員 (或許是完成 Comprehensive Rust 課程的學生),且最好具備一些 C 等其他語言的裸機程式設計經驗。
今天我們要介紹 Rust「裸機開發」:在執行 Rust 程式碼時不使用作業系統。這會分為以下幾個部分:
- 什麼是
no_std
Rust? - 編寫微控制器的韌體。
- 編寫應用程式處理器的系統啟動載入程式/核心程式碼。
- 一些適用於 Rust 裸機開發的實用 Crate。
在本課程的微控制器部分,我們將使用 BBC micro:bit 第 2 版當做範例。這是以 Nordic nRF51822 微控制器為基礎的開發板,具備一些 LED 和按鈕、連接 I2C 的加速計和羅盤,以及內建的 SWD 偵錯工具。
如要開始使用,請先安裝稍後需使用的工具。使用 gLinux 或 Debian:
sudo apt install gcc-aarch64-linux-gnu gdb-multiarch libudev-dev picocom pkg-config qemu-system-arm
rustup update
rustup target add aarch64-unknown-none thumbv7em-none-eabihf
rustup component add llvm-tools-preview
cargo install cargo-binutils cargo-embed
為 plugdev
群組中的使用者授予 micro:bit 程式工具的存取權:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0d28", MODE="0664", GROUP="plugdev"' |\
sudo tee /etc/udev/rules.d/50-microbit.rules
sudo udevadm control --reload-rules
使用 MacOS:
xcode-select --install
brew install gdb picocom qemu
brew install --cask gcc-aarch64-embedded
rustup update
rustup target add aarch64-unknown-none thumbv7em-none-eabihf
rustup component add llvm-tools-preview
cargo install cargo-binutils cargo-embed