我想构建一个使用 ESP32 的网关设备。这应该连接到传感器的 ModBus TCP 端口。为此,我想使用已经存在的 Modbus Rust 实现。但是关于如何在 ESP32 上运行 Rust 代码的信息很少。
任何人都可以对这个话题有所了解吗?
我想构建一个使用 ESP32 的网关设备。这应该连接到传感器的 ModBus TCP 端口。为此,我想使用已经存在的 Modbus Rust 实现。但是关于如何在 ESP32 上运行 Rust 代码的信息很少。
任何人都可以对这个话题有所了解吗?
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 好。