ESP32에서 Rust 작업


19

ESP32를 사용할 게이트웨이 장치를 만들고 싶습니다. Sensor의 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 코드를 컴파일 할 수 없음을 의미합니다 . 당신은 당신의 질문에 설치 라고 말 했지만, 당신이 의미하는 것은 아니라고 생각합니다. 오히려 ESP32에서 Rust 코드를 실행하고 Rust 컴파일러를 설치하지 않으려 고합니다.

Rust를 사용하는 것이 절실한 경우 이론적 으로 LLVM IR-> C를 변환 하는 LLVM C 백엔드 를 사용하고 Espressif 에서 제공 하는 툴체인 을 사용하여 ESP32 기계 코드로 컴파일 할 수 있습니다. 그러나 이것은 어려울 것이며 전혀 작동하지 않을 수도 있습니다. Rust는 훌륭한 언어이지만 내장 지원이 현재 C만큼 좋지 않기 때문에이 경우 총알을 물고 C를 사용하는 것이 훨씬 쉽다는 것을 알 수 있습니다.


Rust를 지원하는 다른 하드웨어 보드에 대해 알고 있습니까? 예, 당신이 말했듯이 장치에서 Rust 프로그램을 실행하고 싶고 분명히 컴파일러를 원하지 않습니다!
sparkr

@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-xtensa & https://github.com/espressif/clang-xtensa 로 녹은 LLVM을 기반으로하며이 새로운 ESP32 LLVM 백엔드는 Rust가 ESP32를보다 잘 지원할 수 있도록 도와줍니다. 이 발표는이 미래의 Rust 지원에 대한 힌트까지도 보여줍니다.


IoT.SE에 오신 것을 환영합니다! 내가하는 것이 좋습니다 것입니다 편집 이 더 완전한하기 위해이 답변을. 기본적으로 최소한의 설명이있는 일련의 링크 일 뿐이며 완전한 답변보다 주석처럼 보입니다. 링크는 참조 용으로 만 답변을보다 자세히 설명하는 것이 훨씬 좋습니다. 감사!
anonymous2

8

Aurora0001이 말했듯이 현재 ESP32 (또는 이전 ESP8266)에서는 Rust를 실행할 수 없습니다.

ESP32를 사용하지만 Rust를 사용하려는 경우에 권장되는 칩인 RTL8710과 매우 유사한 칩이 있습니다.

다음 은 누군가가 설정을 안내하는 웹 사이트입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.