Lavorare con Rust su ESP32


19

Vorrei costruire un dispositivo gateway che utilizzerà ESP32. Questo dovrebbe connettersi alla porta ModBus TCP di un sensore. A tale scopo, vorrei utilizzare l'implementazione di Modbus Rust, che esiste già. Ma ci sono pochissime informazioni su come ottenere il codice Rust su ESP32.

Qualcuno può fare luce su questo argomento?


Risposte:


12

Rust utilizza la toolchain LLVM , che è un insieme di programmi utilizzati per compilare la rappresentazione intermedia (IR) di LLVM in codice specifico della piattaforma. Il processo funziona in questo modo:

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

Attualmente, non esiste un backend per l'architettura Xtensa utilizzata da ESP32. Questo, sfortunatamente, significa che non è possibile compilare il codice Rust per ESP32 . Hai detto installazione nella tua domanda, ma suppongo che non volessi dire questo - piuttosto, vuoi eseguire il codice Rust su ESP32, non installare il compilatore Rust lì.

Se sei davvero alla disperata ricerca di Rust, in teoria potresti usare LLVM C Backend , che converte LLVM IR -> C, quindi utilizzare la toolchain fornita da Espressif per compilare il codice macchina ESP32. Tuttavia, questo sarà difficile e potrebbe anche non funzionare affatto. Troverai molto più facile mordere il proiettile e usare C in questo caso, il che è un peccato, perché Rust è un ottimo linguaggio, ma il suo supporto incorporato non è buono come quello di C al momento.


Sei a conoscenza di altre schede hardware che supportano Rust? Sì, come hai detto, voglio solo eseguire programmi Rust sul dispositivo e certamente non voglio un compilatore lì!
Sparkr

@sparkr L'elenco delle piattaforme e architetture supportate supportate da Rust è disponibile qui ; la maggior parte di queste piattaforme sono x86, x86-64 o varie architetture ARM. Immagino che tutti questi siano molto più capaci (e costosi) di quanto tu voglia, quindi limita davvero le tue opzioni con Rust. In particolare, tuttavia, TI MSP430 è elencato come un dispositivo supportato 'Tier 3', quindi Rust potrebbe semplicemente funzionare. Tuttavia, non posso parlare per esperienza personale, poiché non ho ancora usato Rust per applicazioni integrate.
Aurora0001

Ora c'è un fork di rustc supportato dalla comunità per supportare l'arco Xtensa mabez.dev/blog/posts/esp32-rust
Tim McNamara

13

Xtensa ha appena rilasciato un back-end ESP32 / Espressif LLVM ufficiale e un front-end clang. Vedi il loro annuncio qui: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As rust si basa su LLVM, questo nuovo backend ESP32 LLVM dovrebbe contribuire a rendere più probabile il supporto di Rust per ESP32. L'annuncio suggerisce anche il futuro supporto di Rust.


Ciao, benvenuto su IoT.SE! Ti incoraggio a modificare questa risposta per renderla più completa. Allo stato attuale, è fondamentalmente solo una serie di collegamenti con una spiegazione minima e sembra più un commento che una risposta completa. Sarebbe molto meglio spiegare la risposta in modo più dettagliato, con i collegamenti solo come riferimento. Grazie!
anonymous2

8

Come ha detto Aurora0001, attualmente non è possibile eseguire Rust su un ESP32 (o il precedente ESP8266).

C'è un chip molto simile, RTL8710, che è raccomandato per l'uso in situazioni in cui si userebbe un ESP32, ma si desidera utilizzare Rust.

Ecco un sito Web in cui qualcuno guida attraverso la loro configurazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.