Работа с Rust на ESP32

19

Я хотел бы построить устройство шлюза, которое будет использовать ESP32. Это должно подключиться к порту ModBus TCP датчика. Для этой цели я бы хотел использовать реализацию Modbus Rust, которая уже существует. Но есть очень мало информации о том, как я мог бы запустить код Rust на ESP32.

Может кто-нибудь пролить свет на эту тему?

sparkr
источник
Посмотрите на github.com/emosenkis/esp-rs
Франческо Фрассинелли

Ответы:

12

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

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

В настоящее время не существует серверной части для архитектуры Xtensa, используемой ESP32. К сожалению, это означает, что вы не можете скомпилировать код Rust для ESP32 . Вы сказали « установить» в своем вопросе, но я предполагаю, что вы не имели в виду это, скорее, вы хотите запускать код Rust на ESP32, а не устанавливать там компилятор Rust.

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

Аврора0001
источник
Вам известны какие-либо другие аппаратные платы, поддерживающие Rust? Да, как вы сказали, я просто хочу запускать программы Rust на устройстве и, конечно же, не хочу, чтобы там был компилятор!
Спаркр
@sparkr Список поддерживаемых платформ и архитектур, поддерживаемых Rust, доступен здесь ; большинство из этих платформ - либо x86, x86-64, либо различные архитектуры ARM. Я полагаю, что все они гораздо более эффективны (и дороги), чем вы хотите, так что это действительно ограничивает ваши возможности с Rust. Примечательно, однако, что TI MSP430 указан как устройство с поддержкой «Tier 3», так что Rust может просто работать. Не могу сказать из личного опыта, так как я еще не использовал Rust для встроенных приложений.
Aurora0001
В настоящее время существует поддерживаемая сообществом ветка rustc для поддержки Xtensa arch mabez.dev/blog/posts/esp32-rust
Тим Макнамара
13

Xtensa только что выпустила официальный бэкэнд ESP32 / Espressif LLVM и Clang. Смотрите их объявление здесь: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As ржавчина основана на LLVM, этот новый бэкэнд ESP32 LLVM должен помочь повысить поддержку Rust для ESP32. Объявление даже намекает на эту будущую поддержку Rust.

NickBroon
источник
Привет, добро пожаловать в IoT.SE! Я бы посоветовал вам отредактировать этот ответ, чтобы сделать его более полным. В сущности, это просто серия ссылок с минимальным объяснением, и больше похоже на комментарий, чем на полный ответ. Было бы гораздо лучше объяснить ответ более подробно со ссылками только для справки. Благодарность!
anonymous2
8

Как сказал Aurora0001, в настоящее время вы не можете запустить Rust на ESP32 (или на более старой ESP8266).

Есть очень похожий чип, RTL8710, который рекомендуется использовать в ситуациях, когда вы используете ESP32, но хотите использовать Rust.

Вот сайт, где кто-то проходит через их настройки.

Теодор Нордсик
источник