Trabalhando com Rust no ESP32

19

Eu gostaria de construir um dispositivo de gateway que use o ESP32. Isso deve se conectar à porta ModBus TCP de um sensor. Para esse propósito, eu gostaria de usar a implementação do Modbus Rust, que já existe. Mas há muito pouca informação sobre como eu poderia obter o código Rust em execução no ESP32.

Alguém pode lançar alguma luz sobre esse tópico?

faísca
fonte
Veja github.com/emosenkis/esp-rs
Francesco Frassinelli

Respostas:

12

Rust usa a cadeia de ferramentas LLVM , que é um conjunto de programas usados ​​para compilar a representação intermediária (IR) do LLVM em código específico da plataforma. O processo funciona um pouco assim:

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

Atualmente, não há back-end para a arquitetura Xtensa usada pelo ESP32. Infelizmente, isso significa que você não pode compilar o código Rust para o ESP32 . Você disse install na sua pergunta, mas presumo que você não quis dizer isso - você deseja executar o código Rust no ESP32, não instalar o compilador Rust lá.

Se você está realmente desesperado para usar o Rust, você poderia, em teoria, usar o LLVM C Backend , que converte o LLVM IR -> C, e usar a cadeia de ferramentas fornecida pela Espressif para compilar o código da máquina ESP32. No entanto, isso será difícil e talvez nem funcione. Você achará muito mais fácil morder a bala e usar C nesse caso, o que é uma pena, porque Rust é uma ótima linguagem, mas seu suporte incorporado não é tão bom quanto os Cs no momento.

Aurora0001
fonte
Você conhece outras placas de hardware compatíveis com Rust? Sim, como você disse, eu só quero executar programas Rust no dispositivo e certamente não quero um compilador lá!
sparkr
@sparkr A lista de plataformas e arquiteturas suportadas pelo Rust está disponível aqui ; a maioria dessas plataformas é x86, x86-64 ou várias arquiteturas ARM. Eu imagino que todos eles são muito mais capazes (e caros) do que você deseja, então isso realmente limita suas opções com o Rust. Notavelmente, porém, o MSP430 é listado como um 'Tier 3' dispositivo suportado, de modo Rust pode apenas sobre trabalho. Não posso falar por experiência própria, pois ainda não usei o Rust para aplicativos incorporados.
Aurora0001
Agora existe um garfo da rustc suportado pela comunidade para apoiar o arco Xtensa mabez.dev/blog/posts/esp32-rust
Tim McNamara
12

O Xtensa acaba de lançar um back-end oficial do ESP32 / Espressif LLVM e clang front end. Veja seu anúncio aqui: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As O rust é baseado no LLVM, esse novo back-end do ESP32 LLVM deve ajudar a aumentar a probabilidade de suporte ao Rust para o ESP32. O anúncio ainda sugere esse futuro suporte da Rust.

NickBroon
fonte
Ei, bem-vindo ao IoT.SE! Recomendamos que você edite esta resposta para torná-la mais completa. Tal como está, é basicamente apenas uma série de links com uma explicação mínima e parece mais um comentário do que uma resposta completa. Seria muito melhor explicar a resposta com mais detalhes, com os links apenas para referência. Obrigado!
anonymous2
8

Como o Aurora0001 disse, você não pode executar o Rust em um ESP32 atualmente (ou o ESP8266 mais antigo).

Há um chip muito semelhante, o RTL8710, recomendado para uso em situações em que você usaria um ESP32, mas deseja usar o Rust.

Aqui está um site em que alguém analisa sua configuração.

Theodore Nordsieck
fonte