Travailler avec Rust sur l'ESP32

19

Je voudrais construire un périphérique de passerelle qui utilisera l'ESP32. Cela devrait se connecter au port TCP ModBus d'un capteur. Pour cela, je souhaite utiliser l'implémentation Modbus Rust, qui existe déjà. Mais il y a très peu d'informations sur la façon dont je pourrais faire fonctionner le code Rust sur l'ESP32.

Quelqu'un peut-il faire la lumière sur ce sujet?

sparkr
la source
Regardez github.com/emosenkis/esp-rs
Francesco Frassinelli

Réponses:

12

Rust utilise la chaîne d'outils LLVM , qui est un ensemble de programmes utilisés pour compiler la représentation intermédiaire (IR) de LLVM en code spécifique à la plate-forme. Le processus fonctionne un peu comme ceci:

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

Actuellement, il n'y a pas de backend pour l'architecture Xtensa utilisée par l'ESP32. Cela signifie malheureusement que vous ne pouvez pas compiler le code Rust pour l'ESP32 . Vous avez dit installer dans votre question, mais je suppose que vous ne vouliez pas dire cela - plutôt, vous voulez exécuter du code Rust sur l'ESP32, pas y installer le compilateur Rust.

Si vous êtes vraiment désespéré d'utiliser Rust, vous pourriez, en théorie, utiliser le backend LLVM C , qui convertit LLVM IR -> C, puis utiliser la chaîne d'outils fournie par Espressif pour compiler en code machine ESP32. Cependant, cela sera difficile et pourrait même ne pas fonctionner du tout. Vous trouverez beaucoup plus facile de mordre la balle et d'utiliser C dans ce cas, ce qui est dommage, car Rust est un excellent langage, mais son support intégré n'est pas aussi bon que les C pour le moment.

Aurora0001
la source
Connaissez-vous d'autres cartes Hardware prenant en charge Rust? Oui, comme vous l'avez dit, je veux juste exécuter des programmes Rust sur l'appareil et je ne veux certainement pas de compilateur là-bas!
sparkr
@sparkr La liste des plates-formes et architectures prises en charge par Rust est disponible ici ; la plupart de ces plates-formes sont des architectures x86, x86-64 ou diverses ARM. J'imagine que tous ceux-ci sont beaucoup plus capables (et chers) que vous le souhaitez, donc cela limite vraiment vos options avec Rust. En particulier, bien que, la TI MSP430 est répertorié comme un « niveau 3 » périphérique pris en charge, de sorte que la rouille pourrait à peu près le travail. Je ne peux pas parler d'expérience personnelle, car je n'ai pas encore utilisé Rust pour les applications intégrées.
Aurora0001
Il y a maintenant une fourchette de rustc prise en charge par la communauté pour prendre en charge l'arc de Xtensa mabez.dev/blog/posts/esp32-rust
Tim McNamara
13

Xtensa vient de publier un backend officiel et un frontal clang ESP32 / Espressif LLVM. Voir leur annonce ici: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As rust est basé sur LLVM, ce nouveau backend ESPL LLVM devrait aider à rendre la prise en charge de Rust pour ESP32 plus probable. L'annonce fait même allusion à ce futur support de Rust.

NickBroon
la source
Bonjour, bienvenue sur IoT.SE! Je vous encourage à modifier cette réponse pour la rendre plus complète. À l'heure actuelle, il s'agit essentiellement d'une série de liens avec une explication minimale, et ressemble plus à un commentaire qu'à une réponse complète. Il serait bien préférable d'expliquer la réponse plus en détail, avec les liens pour référence uniquement. Merci!
anonymous2
8

Comme l'a dit Aurora0001, vous ne pouvez pas exécuter Rust sur un ESP32 actuellement (ou l'ancien ESP8266).

Il existe une puce très similaire, la RTL8710, qui est recommandée pour une utilisation dans des situations où vous utiliseriez un ESP32, mais souhaitez utiliser Rust.

Voici un site Web où quelqu'un parcourt sa configuration.

Theodore Nordsieck
la source