Praca z rdzą na ESP32

19

Chciałbym zbudować bramę, która będzie korzystała z ESP32. Powinno to połączyć się z portem ModBus TCP czujnika. W tym celu chciałbym zastosować implementację Modbus Rust, która już istnieje. Ale jest bardzo mało informacji na temat tego, jak mogę uruchomić kod Rust na ESP32.

Czy ktoś może rzucić nieco światła na ten temat?

iskierka
źródło
Spójrz na github.com/emosenkis/esp-rs
Francesco Frassinelli

Odpowiedzi:

12

Rust wykorzystuje zestaw narzędzi LLVM , który jest zestawem programów służących do kompilacji pośredniej reprezentacji LLVM (IR) w kodzie specyficznym dla platformy. Proces działa trochę tak:

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

Obecnie nie ma zaplecza dla architektury Xtensa używanej przez ESP32. To niestety oznacza, że nie można skompilować kodu Rust dla ESP32 . W swoim pytaniu powiedziałeś „ zainstaluj” , ale zakładam, że nie miałeś na myśli tego - raczej chcesz uruchomić kod Rust na ESP32, a nie instalować tam kompilatora Rust.

Jeśli naprawdę chcesz używać Rust, teoretycznie możesz użyć Backend LLVM C , który konwertuje LLVM IR -> C, a następnie użyć łańcucha narzędzi dostarczonego przez Espressif do skompilowania do kodu maszynowego ESP32. Jednak będzie to trudne , a może nawet nie działa w ogóle. O wiele łatwiej będzie ci ugryźć pocisk i użyć C w tym przypadku, co jest wstydem, ponieważ Rust jest świetnym językiem, ale jego wbudowane wsparcie nie jest obecnie tak dobre, jak C.

Aurora0001
źródło
Czy znasz inne płyty sprzętowe obsługujące rdzę? Tak, tak jak powiedziałeś, chcę tylko uruchomić programy Rust na urządzeniu i na pewno nie chcę tam kompilatora!
sparkr
@sparkr Lista obsługiwanych platform i architektur obsługiwanych przez Rust jest dostępna tutaj ; większość z tych platform to albo x86, x86-64 lub różne architektury ARM. Wyobrażam sobie, że wszystkie z nich są znacznie bardziej wydajne (i droższe) niż chcesz, więc naprawdę ogranicza twoje opcje w Rust. Warto jednak zauważyć, że TI MSP430 znajduje się na liście urządzeń obsługiwanych przez „Tier 3”, więc Rust może prawie działać. Nie mogę mówić z własnego doświadczenia, ponieważ nie korzystałem jeszcze z Rust w aplikacjach wbudowanych.
Aurora0001
Istnieje teraz wspierany przez społeczność widelec rustc do obsługi łuku Xtensa mabez.dev/blog/posts/esp32-rust
Tim McNamara,
13

Xtensa wydała właśnie oficjalny backend ESP32 / Espressif LLVM i clang. Zobacz ich ogłoszenie tutaj: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As rdza jest oparta na LLVM, ten nowy backend LLVM ESP32 powinien pomóc w zwiększeniu prawdopodobieństwa rdzy dla ESP32. Ogłoszenie wskazuje nawet na przyszłe wsparcie Rust.

NickBroon
źródło
Cześć, witamy na IoT.SE! Zachęcam do edycji tej odpowiedzi, aby była bardziej kompletna. W obecnej formie jest to po prostu seria linków z minimalnym wyjaśnieniem i wygląda bardziej jak komentarz niż pełna odpowiedź. O wiele lepiej byłoby wyjaśnić odpowiedź bardziej szczegółowo, podając jedynie odnośniki. Dzięki!
anonimowy2
8

Jak powiedziała Aurora0001, obecnie nie można uruchomić Rust na ESP32 (lub starszym ESP8266).

Istnieje bardzo podobny układ, RTL8710, który jest zalecany do użycia w sytuacjach, w których chciałbyś użyć ESP32, ale chcesz użyć Rust.

Oto strona internetowa, na której ktoś przeprowadza konfigurację.

Theodore Nordsieck
źródło