Rust 編譯環(huán)境
Rust 可以跨平臺運行,支持 Windows/Linux/Mac 等主流系統(tǒng)。筆者推薦在 Mac或Linux 下學習和開發(fā),效率更高。本書也主要介紹在 Mac/Linux 嵌入式常用工具和實踐習慣。
Rust 提供了非常簡單的安裝命令, 詳細可以參考:Rust 官方入門手冊:https://doc.rust-lang.org/book/
詳細請參考: Installation - The Rust Programming Language (rust-lang.org):https://doc.rust-lang.org/book/ch01-01-installation.html
Mac/Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Windows
Windows 下安裝稍微麻煩點,具體可參考:[Windows]MSVC prerequisites - The rustup book (rust-lang.github.io):https://rust-lang.github.io/rustup/installation/windows-msvc.html
提醒
如果您目前只是學習Rust語法,那么可以暫時忽略以下的工具的安裝,當后期需要編譯和運行 Rust 單片機代碼時候,您可繼續(xù)安裝以下工具。
設(shè)置 Rust night 版本
Rust 的嵌入式開發(fā)環(huán)境需要是 nightly 版本
rustup default nightly
嵌入式編譯工具鏈
編譯嵌入式端的目標文件,需要相應(yīng)的交叉編譯鏈, 需要手動安裝你需要的工具鏈。Rust 目前已經(jīng)支持了大部分的交叉編譯鏈,可以通過命令查看目前系統(tǒng)已經(jīng)支持的交叉編譯鏈:
rustup target list
通常來說,對于不同的芯片廠商,只要芯片內(nèi)核相同,都可以使用相同的編譯鏈,無需再額外配置環(huán)境。
安裝 Cortex-M0 編譯工具(Py32_Rust_Dev_1.1)
rustup target add thumbv6m-none-eabi
Probe-rs
Probe-rs 是一個在Rust 嵌入式開發(fā)的常用軟件工具,有下載固件到芯片,在線調(diào)試固件,打印運行日志、查看芯片內(nèi)存等功能。
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/probe-rs/probe-rs/releases/latest/download/probe-rs-tools-installer.sh | sh
cargo install cargo-binstall
cargo binstall probe-rs-tools
在完成這一步后,如果順利的話,你可以跳轉(zhuǎn)到:快速體驗Rust 嵌入式
主控
本教程使用的開發(fā)版為 Py32_Rust_Dev_1.1
, 所采用的單片機為 py32f030
, 目前該單片機在國內(nèi)市場使用較為普遍,同時國外也有相當多的愛好者已經(jīng)移植了開源的 Arduno 和 Rust。
py32f030 內(nèi)部比較簡單,官方的資料也很完備,比較適合 Rust 嵌入式。該單片機資源如下:
- 內(nèi)核
- 32 位 ARM® Cortex® - M0+
- 最高 48MHz 工作頻率
- 存儲
- Flash:64K
- SRAM:8K
- UART x2
- GPIO x30
- ADC x1
- SPI x2
- Timer x6
- I2C x1
- RTC
- Watchdo
- ......
開發(fā)版
Py32_Rust_Dev_1.1
目前已適配大部分外設(shè)的 Rust 驅(qū)動,且支持開源的 Arduno、普冉官方的 支持包也可使用。初學者可以在不同的IDE或編譯工具上測試,目前支持的框架有:
- Rust
- Arduno
- Keil
- IAR
- EIDE
- GCC
- CMake
Py32_Rust_Dev_1.1
其他
如果安裝環(huán)境或編譯有報錯,你可能需要使用以下命令安裝一些工具, 詳細請參考 常用工具
- 對于 Mac 系統(tǒng)如果沒有安裝 GCC 工具鏈
xcode-select --install
- 對于 Linux 如 ubuntu/Deepin,可以安裝一些常用嵌入式工具
sudo apt-get update
sudo apt-get install build-essential
- 使用 cargo 克隆遠程倉庫,創(chuàng)建新的工程。
# 安裝 generate 命令
cargo install cargo-generate
下載
可使用 Jlink或Stlink用于下載和在線查看日志,在 py32f030-hal
庫的根目錄下運行
cargo r --example XXX
生成其他格式的固件
# 編譯并生成bin文件
cargo objcopy --example embassy_allpin -- -O binary embassy_allpin.bin
# 編譯并生成 hex文件
cargo objcopy --example blinky -- -O ihex blinky.hex
# 編譯并將elf文件自動轉(zhuǎn)換成匯編
cargo objdump --example blinky -- -D > blinky.asm