在 ESP32 上使用 Rust

物联网 ESP32
2021-06-16 22:42:20

我想构建一个使用 ESP32 的网关设备。这应该连接到传感器的 ModBus TCP 端口。为此,我想使用已经存在的 Modbus Rust 实现。但是关于如何在 ESP32 上运行 Rust 代码的信息很少。

任何人都可以对这个话题有所了解吗?

3个回答

Xtensa 刚刚发布了官方的 ESP32/Espressif LLVM 后端和 clang 前端。在此处查看他们的公告:https: //esp32.com/viewtopic.php ? p = 38466 Repos:https : //github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As Rust 基于 LLVM,这个新的 ESP32 LLVM 后端应该有助于使 Rust 更可能支持 ESP32。该公告甚至暗示了这种未来的 Rust 支持。

Rust 使用LLVM 工具链,这是一组用于将LLVM 的中间表示 (IR)编译为特定于平台的代码的程序。这个过程有点像这样:

Rust Code -> Rust Compiler -> LLVM IR -> Back-end -> Platform-specific code
             (Front-end)

目前,ESP32 使用的 Xtensa 架构没有后端不幸的是,这意味着您无法为 ESP32 编译 Rust 代码您确实在问题中安装,但我认为您不是那个意思——相反,您想在 ESP32 上运行 Rust 代码,而不是在那里安装 Rust 编译器。

如果你真的很想使用 Rust,理论上你可以使用LLVM C Backend,它转换 LLVM IR -> C,然后使用Espressif 提供工具链编译为 ESP32 机器码。然而,这将是困难的,甚至可能根本不起作用。在这种情况下,你会发现硬着头皮使用 C 会容易得多,这是一种耻辱,因为 Rust 是一种很棒的语言,但目前它的嵌入式支持不如 C 好。

就像 Aurora0001 所说的那样,您目前无法在 ESP32(或较旧的 ESP8266)上运行 Rust。

有一个非常相似的芯片 RTL8710,建议在您使用 ESP32 但想使用 Rust 的情况下使用它。

是一个网站,有人可以在此浏览他们的设置。