ESP32でのRustの使用


19

ESP32を使用するゲートウェイデバイスを構築したいと思います。これは、センサーのModBus TCPポートに接続する必要があります。この目的のために、すでに存在するModbus Rust実装を使用したいと思います。しかし、ESP32でRustコードを実行する方法に関する情報はほとんどありません。

誰もこのトピックに光を当てることができますか?


回答:


12

RustはLLVMツールチェーンを使用します。これは、LLVMの中間表現(IR)をプラットフォーム固有のコードにコンパイルするために使用されるプログラムのセットです。プロセスは次のように少し動作します。

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

現在、ESP32で使用されるXtensaアーキテクチャのバックエンドはありません。これは、残念ながら、ESP32用のRustコードをコンパイルできないこと意味します。あなたはあなたの質問でインストールを言ったが、私はあなたがそれを意味しなかったと仮定する-むしろ、あなたはそこにRustコンパイラをインストールするのではなく、ESP32でRustコードを実行したい。

Rustを使用したい場合は、理論的にはLLVM Cバックエンドを使用してLLVM IR-> Cを変換し、Espressif提供するツールチェーンを使用してESP32マシンコードにコンパイルできます。ただし、これは困難であり、まったく機能しない場合もあります。この場合、弾丸を噛んでCを使用する方がはるかに簡単であることがわかります。これは残念ですが、Rustは優れた言語ですが、その組み込みサポートは現時点ではCほど優れていません。


Rustをサポートする他のハードウェアボードを知っていますか?はい、あなたが言ったように、私はデバイス上でRustプログラムを実行したいだけであり、確かにそこにコンパイラは必要ありません!
スパークラー

@sparkr Rustがサポートするサポートされているプラ​​ットフォームとアーキテクチャのリストはこちらから入手できます。これらのプラットフォームのほとんどは、x86、x86-64、またはさまざまなARMアーキテクチャです。これらはすべて、あなたが望んでいるよりもはるかに機能的(かつ高価)であると思うので、Rustの選択肢は本当に制限されます。ただし、注目すべきは、TI MSP430は「Tier 3」をサポートするデバイスとしてリストされているため、Rustはほぼ動作する可能性があることです。ただし、Rustを組み込みアプリケーションにまだ使用していないため、個人的な経験からは話せません。
Aurora0001


12

Xtensaは公式のESP32 / Espressif LLVMバックエンドとclangフロントエンドをリリースしました。ここに彼らの発表を参照してください:https://esp32.com/viewtopic.php?p=38466 ルポ:https://github.com/espressif/llvm-xtensahttps://github.com/espressif/clang-xtensa としてrustはLLVMに基づいています。この新しいESP32 LLVMバックエンドは、ESP32のRustサポートをより可能にするのに役立つはずです。この発表は、この将来のRustサポートについても示唆しています。


ねえ、IoT.SEへようこそ!私がすることをお勧めします編集し、それをより完全にするために、この答えを。現状では、基本的には説明が最小限の一連のリンクであり、完全な回答というよりはコメントのように見えます。参照のみのリンクを使用して、答えをより詳細に説明する方がはるかに良いでしょう。ありがとう!
anonymous2

8

Aurora0001が言ったように、現在ESP32(または古いESP8266)でRustを実行することはできません。

非常によく似たチップ、RTL8710があります。これは、ESP32を使用するが、Rustを使用したい状況での使用に推奨されます。

ここでは、誰かが自分のセットアップを歩くウェブサイトがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.