嵌入式Rust工具庫包列表 - apoll
在這篇文章中,我嘗試彙總我經常看到/閱讀的許多術語,希望為該領域的新手建立一個快速參考。請注意,並非所有都特定於 Embedded-Rust,並且有些已經是常用術語,但是,人們會經常看到相關聯中提到的最多的術語。
使用以下圖示試圖對不同的術語進行分類:
- 工具(除錯、快閃記憶體、協議或實用程式)
- 框架/執行時
- 儲存庫/專案
- 副檔名
- Rust 關鍵字/特徵/型別
- 庫/crate
框架/執行時
- RTIC - Real-Time Interrupt-driven Concurrency 的縮寫,它是用於構建實時系統的框架(不是作業系統)。作為初學者,您可能會被介紹到這個框架,作為實現基於中斷的應用程式的替代方案。RTIC 在 Rust 中提供了一種更簡潔、更結構化的處理中斷的方式。
- RTFM - Real-Time for the Masses 的縮寫,這是 RTIC 框架的舊命名。
- Tokio -Tokio是用於編寫多執行緒非同步應用程式的 Rust 執行時。Tokio 基於 Rust 的非同步特性提供執行時、API(網路、檔案系統操作等)和非同步任務工具等。
- Embassy - 可以被視為 Tokio 的嵌入式版本,儘管更緊湊且功能更少。Embassy 是一個更全面的 HAL,也可以作為 RTIC 框架的替代方案。
- uAMP (microAMP) - 用於構建裸機 AMP(非對稱多處理)應用程式的(微)框架。它是 (RTIC) 多核版本的核心基礎。
- WASM - Web Assembly 的縮寫,它提供了一種標準,用於以一種稱為二進位制指令格式的特定格式編寫應用程式。從技術上講,任何程式語言的應用程式程式碼都可以編譯成 WASM。因此,生成的位元組碼需要在可以執行 WASM 位元組碼的虛擬化環境中執行。這意味著 WASM 在技術上也可以在任何平臺上執行。WASM 通常被稱為概念機器的構建目標。
- WASI - 是 Web 組裝系統介面的縮寫,可以在 Web 上下文之外使用 WASM。本質上,WASI 為 WASM 訪問系統功能提供了一種機制(或更準確的標準)。人們經常提到,WASI 提供了帶有 WASM 的概念作業系統檢視。有關 WASM 和 WASI 之間區別的更多資訊,這裡是一個有用的 Stackoverflow 帖子。
儲存庫/專案:
- Knurling - 該術語用於指代由Ferrous Systems建立的 Knurling-rs 專案,這是一家專門研究 Rust 的諮詢公司。Knurling 專案的目標是透過提供培訓材料和工具來增強使用 Rust 的裸機開發。
- esp-rs - 專案名稱,包含庫、板條箱和在 Espressif SoC 上使用 Rust 的示例
- rp-rs - 專案名稱,包含庫、板條箱和在 rasberry pi 系列微控制器上使用 Rust 的示例。
- stm32-rs - 專案名稱,包含在 STM32 微控制器上使用 Rust 的庫、板條箱和示例
副檔名
- SVD - System View Description 的縮寫,是一種檔案格式,用於正式描述微控制器中包含的系統,特別是外圍裝置的記憶體對映暫存器。系統檢視描述中包含的詳細資訊與裝置參考手冊中的資料相當。
- witx是一種基於 WASM 文字格式的檔案格式。witx 還應該為嵌入式裝置介面提供一套規範。
工具:
- Probe-run - 是引入的Knurling工具之一,用於在裸機裝置上輕鬆快閃記憶體和執行嵌入式應用程式。Probe-run 還提供堆疊回溯,模仿 Rust 的恐慌行為,以檢視哪裡出了問題。更多細節在這裡。
- Defmt - 也是Knurling工具的一部分,是微控制器的日誌框架。一種使用 UART 的傳統序列監視器的有效替代方案。defmt 代表“延遲格式”。更多細節在這裡。
- Flip-Link - 另一個 Kunrling 工具,它是一個連結器包裝器,可為嵌入式應用程式新增堆疊溢位保護。更多細節在這裡。
- SVD2Rust - 是一個命令列工具,可將 SVD 檔案轉換為 crates,公開型別安全的 API 以訪問裝置的外圍裝置。
- cargo-embed -probe -rs 的一部分,cargo-embed 是一個 cargo 子命令,支援嵌入式目標的閃爍和除錯日誌記錄。
- cargo-flash - 也是 probe-rs 的一部分,是用於閃爍嵌入式目標的 cargo 子命令。
- OpenOCD - Open On-Chip Debugger 的縮寫,是一個在除錯介面卡和主機之間提供介面的程式。OpenOCD 為微控制器提供除錯、測試和程式設計功能。
- GDB - 除錯工具鏈的一部分,是 GNU 偵錯程式的縮寫。GDB 是用於除錯應用程式的流行平臺。它提供了一個使用者介面來除錯微控制器應用程式。GDB 通常透過 OpenOCD 連線到微控制器。
- ITM - Instrumentation Trace Macrocell 的縮寫,是一種除錯功能/工具,尤其適用於 ARM Cortex-M 裝置,是用於除錯嵌入式應用程式的應用程式驅動的微控制器跟蹤源。也是替代傳統序列監控的可能選項之一。
- Semihosting - 是另一種用於嵌入式系統應用程式除錯的日誌記錄機制/框架。也是傳統序列通訊記錄的另一種選擇。
Rust 關鍵字/特徵/型別
- async- 在多執行緒應用程式的上下文中使用,async是 Rust 中在函式之前使用的關鍵字,以使其返回Future或承諾解析。
- await - 也用於多執行緒應用程式的上下文中,await是在塊/函式中使用的關鍵字async,它使應用程式等待直到Futureor 承諾解決。
- Future- 用於非同步程式設計,是表示可能尚未完成計算的值的特徵。AFuture使執行緒可以繼續做有用的工作,直到一個值可用。
- Cow- 這個可能有點斷章取義,但我經常看到它,我不得不提到它。命名顯然很混亂 。事實證明,Cow是一種類似於Cell、RefCell或Arc的智慧指標,它代表著寫時克隆。
- FFI - Foreign Function Interface 的縮寫,它是一個函式介面,允許從 Rust 中呼叫 C 庫函式。
庫/crate
- rtt_target - 提供 RTT 協議的目標端實現的 Crate。
- defmt-rtt - 支援透過 RTT(實時傳輸)協議傳輸 defmt 日誌訊息的 Crate。
- PAC - 外設訪問包的縮寫,是一個較低的抽象層,提供了一個圍繞微控制器外設記憶體對映暫存器的包裝器。通常每個微控制器都有自己的 PAC。
- HAL - 硬體抽象層的縮寫,它提供更高階別的抽象,是位於 PAC 之上的層。多個微控制器可以捆綁在一個 HAL 下。
- nalgebra - 是使用 Rust 編寫的線性代數庫的名稱。該庫通常與 Rust 嵌入式圖形庫一起使用。
相關文章
- Rust Web框架列表RustWeb框架
- spacejam/sled:使用Rust語言編寫的嵌入式資料庫Rust資料庫
- Occcurrent:JVM事件溯源工具庫包JVM事件
- gluesql/gluesql:一個用Rust編寫的SQL資料庫引擎庫包SQLRust資料庫
- rust-unofficial/awesome-rust:Rust開原始碼和資源的精選列表。Rust原始碼
- Rust 常用庫Rust
- Rust 良心工具 - playgroundRust
- Python:列表也能拆包?Python
- 對”在嵌入式Rust中使用std“的看法Rust
- 【譯】理解Rust中的閉包Rust
- MongoDB 資源、庫、工具、應用程式精選列表中文版MongoDB
- Python爬蟲工具列表Python爬蟲
- 使用Rust編寫嵌入式韌體入門教程Rust
- 嵌入式資料庫資料庫
- launchbadge/sqlx: Rust SQL工具包讓SQL在編譯時驗證檢查SQLRust編譯
- 【摸魚神器】UI庫秒變LowCode工具——列表篇(二)維護json的小工具UIJSON
- rust常用開源庫Rust
- rust學習八、包和模組Rust
- rust十三.1、匿名函式(閉包)Rust函式
- 開源工具、平臺列表開源工具
- 使用Rust和Elixir實現高效的下發好友列表Rust
- 開發一個簡單的工具,匯出github倉庫所有issue列表Github
- sqlx是一個Rust SQL工具包:讓SQL在編譯時驗證檢查SQLRust編譯
- rust庫-ouroboros中文文件RustROS
- 與 Rust 勾心鬥角 · 包圍球Rust
- conda可安裝的軟體包列表
- 【摸魚神器】UI庫秒變LowCode工具——列表篇(一)設計與實現UI
- 嵌入式軟體靜態解析工具
- rust-raspberrypi-OS-tutorials:用Rust編寫樹莓派嵌入式作業系統的學習教程Rust樹莓派作業系統
- Disruptor-rs:Rust中Disruptor庫Rust
- Rust 連線 PostgreSQL 資料庫RustSQL資料庫
- openpyxl庫寫入列表資料
- 簡明快速配置 Rust 工具鏈Rust
- 前端工具Rome將用Rust改寫前端Rust
- 使用MD5Util工具包對資料庫密碼加密資料庫密碼加密
- 透視Matplotlib核心功能和工具包 - Cartopy工具包
- 透視Matplotlib核心功能和工具包 - Seaborn工具包
- Rust引用自定義c/c++庫RustC++