Trabajando con Rust en el ESP32

19

Me gustaría construir un dispositivo de puerta de enlace que use el ESP32. Esto debería conectarse al puerto ModBus TCP de un sensor. Para este propósito, me gustaría usar la implementación Modbus Rust, que ya existe. Pero hay muy poca información sobre cómo podría ejecutar el código Rust en el ESP32.

¿Alguien puede arrojar algo de luz sobre este tema?

chispa
fuente
Mira github.com/emosenkis/esp-rs
Francesco Frassinelli

Respuestas:

12

Rust utiliza la cadena de herramientas LLVM , que es un conjunto de programas que se utiliza para compilar la representación intermedia (IR) de LLVM en código específico de la plataforma. El proceso funciona un poco así:

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

Actualmente, no hay backend para la arquitectura Xtensa utilizada por ESP32. Esto, desafortunadamente, significa que no puede compilar el código Rust para el ESP32 . Dijo instalar en su pregunta, pero supongo que no quiso decir eso, sino que desea ejecutar el código Rust en el ESP32, no instalar el compilador Rust allí.

Si realmente está desesperado por usar Rust, podría, en teoría, usar el backend LLVM C , que convierte LLVM IR -> C, y luego usar la cadena de herramientas proporcionada por Espressif para compilar el código de máquina ESP32. Sin embargo, esto será difícil y podría no funcionar en absoluto. Le resultará mucho más fácil morder la bala y usar C en este caso, lo cual es una pena, porque Rust es un gran lenguaje, pero su soporte integrado no es tan bueno como el de C en este momento.

Aurora0001
fuente
¿Conoces otras placas de hardware que admitan Rust? ¡Sí, como dijiste, solo quiero ejecutar programas Rust en el dispositivo y ciertamente no quiero un compilador allí!
sparkr
@sparkr La lista de plataformas y arquitecturas compatibles que admite Rust está disponible aquí ; La mayoría de esas plataformas son x86, x86-64 o varias arquitecturas ARM. Me imagino que todos ellos son mucho más capaces (y caros) de lo que quieres, por lo que realmente limita tus opciones con Rust. Cabe destacar, sin embargo, la TI MSP430 aparece como un 'nivel 3' dispositivo compatible, por lo que podría Rust sólo de trabajo. Sin embargo, no puedo hablar por experiencia personal, ya que todavía no he usado Rust para aplicaciones integradas.
Aurora0001
Ahora hay una bifurcación de rustc apoyada por la comunidad para apoyar el arco Xtensa mabez.dev/blog/posts/esp32-rust
Tim McNamara
13

Xtensa acaba de lanzar un back-end oficial ESP32 / Espressif LLVM y un front-clang. Vea su anuncio aquí: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As Rust se basa en LLVM, este nuevo backend ESP32 LLVM debería ayudar a hacer más probable el soporte de Rust para ESP32. El anuncio incluso sugiere este futuro soporte de Rust.

NickBroon
fuente
¡Hola, bienvenido a IoT.SE! Te animo a editar esta respuesta para que sea más completa. Tal como está, básicamente es solo una serie de enlaces con una explicación mínima, y ​​parece más un comentario que una respuesta completa. Sería mucho mejor explicar la respuesta con más detalle, con los enlaces solo como referencia. ¡Gracias!
anonymous2
8

Como dijo Aurora0001, no puede ejecutar Rust en un ESP32 actualmente (o el ESP8266 más antiguo).

Hay un chip muy similar, el RTL8710, que se recomienda para usar en situaciones en las que usaría un ESP32, pero quiere usar Rust.

Aquí hay un sitio web donde alguien recorre su configuración.

Theodore Nordsieck
fuente