隨著 Rust 的快速發(fā)展,Rust 在嵌入式中的支持越來越豐富。目前已經(jīng)有非常多的 Rust 嵌入式項(xiàng)目和 Rust 單片機(jī)外設(shè)支持庫。理論上來說,目前大部分的 ARM、RISC-V 單片機(jī) 都能運(yùn)行 Rust,但大部分單片機(jī)官方?jīng)]有編寫Rust 外設(shè)庫,因此用戶暫時(shí)無法直接開發(fā) Rust 應(yīng)用。本文將介紹幾個(gè)已經(jīng)支持 Rust 外設(shè)庫的常用單片機(jī),包括 STM、 ESP、 AVR 、NRF等單片機(jī),目前已經(jīng)可以使用 Rust 來開發(fā)這些單片機(jī)的嵌入式應(yīng)用。
常見的單片機(jī)
STM32 (ST Microelectronics)
STM32 系列的微控制器擁有所有微控制器中最豐富的 Rust 支持。stm32-rs倉庫包含適用于各種 STM32 微控制器的 Rust PAC crate,stm32-rs主頁包含所有系列的外設(shè)驅(qū)動(dòng)支持包。截至 2024 年 6 月,擁有 1.2K 星,目前倉庫更新比較活躍。倉庫地址:https://github.com/stm32-rs/stm32-rs
Atmel AVR
Rahix/avr-hal 是適用于 ATmega AVR(包括 Arduino、ATmega、ATtiny)的流行第 3 方 Rust HAL 庫,截止目前已經(jīng)有1.2K星,更新比較活躍。倉庫地址:https://github.com/Rahix/avr-hal
下載和調(diào)試需要安裝[ravedude](https://github.com/Rahix/avr-hal/tree/main/ravedude)
工具,可以使用cargo run
,然后連接串口顯示打印的消息。手上有 Arduno AVR 系列的開源板可以試試。在 https://blog.logrocket.com/complete-guide-running-rust-arduino/ 上有一個(gè)關(guān)于讓 Rust 在 Arduino Uno(使用 ATmega328P 微控制器)上工作的教程?;谠摻坛?,大約 5 分鐘即可構(gòu)建一個(gè)LED 燈的 Rust 工程以及完成燒錄。
Atmel SAM
atsamd-rs/atsamd GitHub 存儲(chǔ)庫提供了各種 crate,用于使用 Rust 處理基于 Atmel samd11、samd21、samd51 和 Same5x 的單片機(jī)。該存儲(chǔ)庫提供 PAC(外圍訪問包)和更高級(jí)別的 HAL(硬件抽象層)。HAL 實(shí)現(xiàn)由embedded-hal 項(xiàng)目指定的 trait。目前已有 538 顆星。倉庫地址:https://github.com/atsamd-rs/atsamd
MSP430 (Texas Instruments)
GitHub 存儲(chǔ)庫 japaric/msp430-rtfm 上有一個(gè)可用于 MSP430 MCU 的 RTFM(Real-Time For the Masses,RTIC 的舊名稱)版本,最近一次提交已經(jīng)是 7 年前了。倉庫地址:https://github.com/japaric/msp430-rtfm
ESP32 (Espressif Systems)
作為物聯(lián)網(wǎng)產(chǎn)業(yè)的領(lǐng)先方案商,樂鑫 對(duì)目前主流的 ESP32 單片機(jī)都做了 Rust 驅(qū)動(dòng)支持,所有系列的單片機(jī)驅(qū)動(dòng)庫支持 embassy 異步操作,倉庫包括非常豐富的教程文檔。官方倉庫:https://github.com/esp-rs,如果想入門嵌入式 Rust,從 Esp32 系列單片機(jī)入門是個(gè)不錯(cuò)的方向。高質(zhì)量教程:https://docs.esp-rs.org/book/
Nordic nRF
nrf-rs/nrf-hal 倉庫為 nRF51、nRF52 和 nRF91 系列微控制器提供 Rust HAL庫。手上有 micro:bit v2主板的可以玩玩 nrf-rust。embassy 對(duì) NRF 的單片機(jī)支持非常高。想深入學(xué)習(xí) embassy 操作系統(tǒng)的可以從這個(gè)單片機(jī)開始。倉庫地址:https://github.com/nrf-rs/nrf-hal
RP2040
rp-rs/rp-hal 倉庫提供了高質(zhì)量的 RP2040 Rust 代碼,同時(shí)支持 embassy,國外使用的挺多。倉庫地址:https://github.com/rp-rs/rp-hal
PSoC
PSOC6 系列的單片機(jī)Rust 倉庫看起來不太活躍。倉庫地址:https://github.com/psoc-rs/psoc6-hal
BL(博流)
BL602 的單片機(jī)目前由 Sipeed公司維護(hù),倉庫地址:https://github.com/sipeed/bl602-hal
GD32(兆易)
目前 GD32 只有一款 Risc-V 內(nèi)核的單片機(jī)和 F1 系列的單片機(jī)有 Rust 外設(shè)庫,看起來都并非官方支持。V系列倉庫地址為:https://github.com/gd32v-rust
F1 系列倉庫地址:https://github.com/gd32-rust/gd32f1x0-hal
Swm341(華芯微特)
作為低成本顯示的單片機(jī),SWM341 目前有一個(gè)非官方的外設(shè)支持包,倉庫地址為:https://github.com/hysonglet/synwit_hal_common,目前已經(jīng)成功移植 Slint Rust GUI 框架。倉庫暫未公開,等完善后將開放。
WCH(沁恒微)
WCH 目前對(duì) Rust 的支持比較好,甚至也支持 embassy 異步操作系統(tǒng)。倉庫地址:https://github.com/ch32-rs
其他
目前也有其他單片機(jī)開始支持 Rust,如 NXP,瑞薩、XMC 等,有興趣的可以查閱:https://github.com/rust-embedded/awesome-embedded-rust