使用标准库(std

乐鑫提供了一个基于 C 的开发框架,称为 ESP-IDF。它支持(或将会支持)所有名称以 ESP32 开头的乐鑫芯片。注意,该框架 支持 ESP8266。

ESP-IDF 提供了一个功能强大的 newlib 环境,足以在其上构建 Rust 标准库(std)。这就是在乐鑫设备上启用 std 支持的方法。

当前支持情况

只要是 ESP-IDF 框架支持的乐鑫产品,就支持 Rust std 开发。有关 ESP-IDF 的不同版本,以及乐鑫芯片支持的详细信息,请参阅此表格

使用 std 时,可以访问 ESP-IDF 中存在的许多功能,包括线程、互斥锁和其他同步原语、集合、随机数生成、套接字等。

esp-rs 相关的 Crate

仓库描述
embedded-svc嵌入式服务的抽象 trait(WiFiNetworkHttpdLogging)。
esp-idf-svcesp-idf 驱动实现的 embedded-svc
esp-idf-halesp-idf 框架实现的 embedded-hal 和其他 trait。
esp-idf-sysesp-idf 开发框架的 Rust 绑定(binding)。提供了对驱动、Wi-Fi 和其他功能的原始(unsafe)访问。

上述 crate 的相互依赖关系如下图所示。

graph TD;
    esp-idf-hal --> esp-idf-sys & embedded-svc
    esp-idf-svc --> esp-idf-sys & esp-idf-hal & embedded-svc

何时适合使用标准库(std

  • 丰富的功能:如果你的嵌入式系统需要大量功能,例如支持网络协议、文件 I/O 或复杂的数据结构,使用宿主环境(hosted-environment)会是一个较好的方法。因为 std 库提供了丰富的功能,便于构建复杂的应用程序。
  • 可移植性:std crate 提供了一组标准化的 API,可以跨不同平台和架构使用,使你能够更轻松地编写可移植和可重用的代码。
  • 快速开发:std crate 提供了一组丰富的功能,可用于快速高效地构建应用程序,而无需过多担心底层细节。