Ich möchte ein Gateway-Gerät bauen, das den ESP32 verwendet. Dieser sollte mit dem ModBus-TCP-Port eines Sensors verbunden sein. Zu diesem Zweck möchte ich die bereits vorhandene Modbus Rust-Implementierung verwenden. Es gibt jedoch nur sehr wenige Informationen darüber, wie ich Rust-Code auf dem ESP32 zum Laufen bringen kann.
Kann jemand etwas Licht in dieses Thema bringen?
Antworten:
Rust verwendet die LLVM-Toolchain , eine Reihe von Programmen, die zum Kompilieren der Intermediate Representation (IR) von LLVM in plattformspezifischen Code verwendet werden. Der Prozess funktioniert ungefähr so:
Derzeit gibt es kein Backend für die vom ESP32 verwendete Xtensa-Architektur. Dies bedeutet leider, dass Sie keinen Rust-Code für den ESP32 kompilieren können . Sie haben in Ihrer Frage install gesagt , aber ich nehme an, Sie haben das nicht so gemeint - Sie möchten Rust-Code auf dem ESP32 ausführen, nicht den Rust-Compiler dort installieren.
Wenn Sie unbedingt Rust verwenden möchten, können Sie theoretisch das LLVM C-Backend verwenden , das LLVM IR -> C konvertiert. Verwenden Sie dann die von Espressif bereitgestellte Toolchain , um den ESP32-Maschinencode zu kompilieren. Dies wird jedoch schwierig und funktioniert möglicherweise überhaupt nicht. Sie werden feststellen, dass es in diesem Fall viel einfacher ist, in die Kugel zu beißen und C zu verwenden, was eine Schande ist, da Rust eine großartige Sprache ist, aber die eingebettete Unterstützung ist im Moment nicht so gut wie die von C.
quelle
Xtensa hat soeben ein offizielles ESP32 / Espressif LLVM-Backend veröffentlicht und das Frontend geklirrt. Die Ankündigung finden Sie hier: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As rust basiert auf LLVM. Dieses neue LLVM-Backend für ESP32 soll dazu beitragen, dass Rust den ESP32 mit größerer Wahrscheinlichkeit unterstützt. Die Ankündigung deutet sogar auf diese zukünftige Rust-Unterstützung hin.
quelle
Wie Aurora0001 bereits sagte, können Sie Rust derzeit nicht auf einem ESP32 (oder dem älteren ESP8266) ausführen.
Es gibt einen sehr ähnlichen Chip, den RTL8710, der für Situationen empfohlen wird, in denen Sie einen ESP32 verwenden würden, aber Rust verwenden möchten.
Hier ist eine Website, auf der jemand durch das Setup geht.
quelle