嵌入式Rust工具庫包列表 - apoll

banq發表於2022-11-12

在這篇文章中,我嘗試彙總我經常看到/閱讀的許多術語,希望為該領域的新手建立一個快速參考。請注意,並非所有都特定於 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 帖子。


儲存庫/專案:

  1.  Knurling - 該術語用於指代由Ferrous Systems建立的 Knurling-rs 專案,這是一家專門研究 Rust 的諮詢公司。Knurling 專案的目標是透過提供培訓材料和工具來增強使用 Rust 的裸機開發。
  2.  esp-rs - 專案名稱,包含庫、板條箱和在 Espressif SoC 上使用 Rust 的示例
  3.  rp-rs - 專案名稱,包含庫、板條箱和在 rasberry pi 系列微控制器上使用 Rust 的示例。
  4.  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 嵌入式圖形庫一起使用。

相關文章