在ESP32上使用Rust


19

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

谁能阐明这个话题?


Answers:


12

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后端(将LLVM IR-> C转换),然后使用Espressif提供工具链编译为ESP32机器代码。但是,这将很困难,甚至可能根本不起作用。在这种情况下,您会发现硬着头皮使用C容易得多,这很可惜,因为Rust是一种很棒的语言,但是目前它的嵌入式支持不如C。


您是否知道其他任何支持Rust的硬件板?是的,就像您说的那样,我只想在设备上运行Rust程序,并且我当然不希望在那里有编译器!
sparkr

@sparkr 此处提供 Rust支持的受支持平台和体系结构的列表;这些平台大多数是x86,x86-64或各种ARM体系结构。我想所有这些功能都比您想要的要强大得多(而且价格昂贵),因此,确实确实限制了Rust的选择。但是,值得注意的是,TI MSP430被列为“第3层”支持的设备,因此Rust可能就可以正常工作。不过,从我个人的经验来看,还是不能说话的,因为我还没有将Rust用于嵌入式应用程序。
Aurora0001

现在有一个由社区支持的rustc分支来支持Xtensa拱mabez.dev/blog/posts/esp32-rust
Tim McNamara

12

Xtensa刚刚发布了正式的ESP32 / Espressif LLVM后端和clang前端。在此处查看其公告:https: //esp32.com/viewtopic.php ? p = 38466回购协议:https : //github.com/espressif/llvm-xtensahttps://github.com/espressif/clang-xtensa As rust基于LLVM,因此新的ESP32 LLVM后端应有助于使Rust更可能支持ESP32。该公告甚至暗示了将来对Rust的支持。


嗨,欢迎来到IoT.SE!我鼓励您编辑此答案以使其更完整。从目前的角度来看,它基本上只是一系列带有最少说明的链接,看起来更像是评论,而不是完整的答案。最好仅提供链接以更详细地解释答案。谢谢!
匿名

8

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

有一种非常相似的芯片RTL8710,推荐用于需要使用ESP32但又要使用Rust的情况。

是一个网站,有人可以浏览其设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.