Работа с Rust на ESP32


19

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

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


Ответы:


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 на данный момент.


Вам известны какие-либо другие аппаратные платы, поддерживающие 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.


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

8

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.