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

22-11-12 banq

在这篇文章中,我尝试汇总我经常看到/阅读的许多术语,希望为该领域的新手创建一个快速参考。请注意,并非所有都特定于 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 嵌入式图形库一起使用。