Робота з Рустом над ESP32


19

Я хотів би побудувати пристрій шлюзу, який буде використовувати ESP32. Це має підключитися до порту ModBus TCP датчика. З цією метою я хотів би скористатися реалізацією Modbus Rust, яка вже існує. Але відомостей про те, як я міг запустити Rust-код на ESP32, є дуже мало.

Чи може хтось пролити трохи світла на цю тему?


Подивіться на github.com/emosenkis/esp-rs
Francesco

Відповіді:


12

Rust використовує ланцюжок інструментів LLVM , що представляє собою набір програм, що використовуються для компіляції проміжного представлення LLVM (IR) у специфічний для платформи код. Процес працює приблизно так:

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

В даний час немає архіву для архітектури Xtensa, що використовується ESP32. Це, на жаль, означає, що ви не можете компілювати Rust-код для ESP32 . Ви сказали встановити у своєму запитанні, але я припускаю, що ви цього не мали на увазі - скоріше ви хочете запустити Rust-код на ESP32, а не встановлювати компілятор Rust там.

Якщо ви справді відчайдушно використовуєте Rust, теоретично ви могли б використовувати Backend LLVM C , який перетворює LLVM IR -> C, а потім використовувати ланцюжок інструментів, надану Espressif, для компіляції до машинного коду ESP32. Однак це буде важко , і може взагалі не працювати. Вам буде набагато легше кусати кулю і використовувати C в цьому випадку, що шкода, тому що Руст - чудова мова, але вбудована підтримка не настільки хороша, як на сьогодні.


Чи відомо вам про будь-які інші апаратні дошки, які підтримують Rust? Так, як ви сказали, я просто хочу запускати програми Rust на пристрої, і я, звичайно, не хочу там компілятора!
блискавка

@sparkr Список підтримуваних платформ та архітектур, які підтримує Rust, доступний тут ; більшість з цих платформ є або x86, x86-64, або різними архітектурами ARM. Я думаю, що всі вони набагато здатніші (і дорогіші), ніж ви хочете, тому це дійсно обмежує ваші варіанти з Руст. Однак, TI MSP430 занесений до пристрою, який підтримується "рівнем 3", тому Rust може працювати майже на роботі. Не можу говорити з особистого досвіду, оскільки я ще не використовував Rust для вбудованих додатків.
Aurora0001

Зараз існує спільнота з підтримкою fork of rustc для підтримки арки Xtensa mabez.dev/blog/posts/esp32-rust
Тім Макнамара

13

Компанія Xtensa щойно випустила офіційний бекенд ESP32 / Espressif LLVM та передній край клаксону. Дивіться їх оголошення тут: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa Як іржа базується на LLVM, цей новий сервер ESP32 LLVM повинен допомогти зробити Rust підтримку ESP32 більш імовірною. Оголошення навіть натякає на цю майбутню підтримку Іржі.


Привіт, ласкаво просимо на IoT.SE! Я б радив вам відредагувати цю відповідь, щоб зробити її більш повною. На сьогодні це, як правило, лише низка посилань з мінімальним поясненням і виглядає скоріше як коментар, ніж повна відповідь. Набагато краще було б пояснити відповідь більш докладно із посиланнями лише для довідки. Спасибі!
анонімний2,

8

Як сказав Aurora0001, ви не можете запустити Rust на ESP32 (або старіший ESP8266).

Є дуже схожий чіп, RTL8710, який рекомендується використовувати в ситуаціях, коли ви використовуєте ESP32, але хочете використовувати Rust.

Ось веб-сайт, де хтось переглядає їх налаштування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.