Làm việc với Rust trên ESP32


19

Tôi muốn xây dựng một thiết bị cổng sẽ sử dụng ESP32. Điều này sẽ kết nối với cổng ModBus TCP của Cảm biến. Với mục đích này, tôi muốn sử dụng triển khai Modbus Rust, đã tồn tại. Nhưng có rất ít thông tin về cách tôi có thể lấy mã Rust chạy trên ESP32.

Bất cứ ai có thể làm sáng tỏ về chủ đề này?


Câu trả lời:


12

Rust sử dụng chuỗi công cụ LLVM , là một tập hợp các chương trình được sử dụng để biên dịch biểu diễn trung gian (IR) của LLVM thành mã dành riêng cho nền tảng. Quá trình hoạt động giống như thế này:

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

Hiện tại, không có phần phụ trợ cho kiến ​​trúc Xtensa được sử dụng bởi ESP32. Thật không may, điều này có nghĩa là bạn không thể biên dịch mã Rust cho ESP32 . Bạn đã nói cài đặt trong câu hỏi của bạn, nhưng tôi cho rằng bạn không có ý đó - thay vào đó, bạn muốn chạy mã Rust trên ESP32, không cài đặt trình biên dịch Rust ở đó.

Về lý thuyết, nếu bạn thực sự khao khát sử dụng Rust, về lý thuyết, bạn có thể sử dụng LLVM C Backend , chuyển đổi LLVM IR -> C, sau đó sử dụng chuỗi công cụ do Espressif cung cấp để biên dịch thành mã máy ESP32. Tuy nhiên, điều này sẽ khó khăn , và thậm chí có thể không hoạt động. Bạn sẽ thấy việc cắn viên đạn dễ dàng hơn rất nhiều và sử dụng C trong trường hợp này, điều này thật đáng xấu hổ, bởi vì Rust là một ngôn ngữ tuyệt vời, nhưng hỗ trợ nhúng của nó không tốt như C hiện tại.


Bạn có biết bất kỳ bảng Phần cứng nào khác hỗ trợ Rust không? Vâng, như bạn đã nói tôi chỉ muốn chạy các chương trình Rust trên thiết bị và tôi chắc chắn không muốn có trình biên dịch ở đó!
Sparkr

@sparkr Danh sách các nền tảng và kiến ​​trúc được hỗ trợ mà Rust hỗ trợ có sẵn tại đây ; hầu hết các nền tảng đó là x86, x86-64 hoặc các kiến ​​trúc ARM khác nhau. Tôi tưởng tượng tất cả những thứ đó có khả năng (và đắt tiền) hơn nhiều so với bạn muốn, vì vậy nó thực sự giới hạn các lựa chọn của bạn với Rust. Tuy nhiên, đáng chú ý, TI MSP430 được liệt kê là thiết bị được hỗ trợ 'Cấp 3', do đó Rust có thể chỉ hoạt động. Không thể nói từ kinh nghiệm cá nhân, vì tôi chưa sử dụng Rust cho các ứng dụng nhúng.
Aurora0001

Hiện tại đã có một ngã ba Rustc được cộng đồng hỗ trợ để hỗ trợ Xtensa arch mabez.dev/blog/posts/esp32-rust
Tim McNamara

12

Xtensa vừa phát hành một phụ trợ chính thức của ESP32 / Espressif LLVM và clang front end. Xem thông báo của họ tại đây: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As rỉ sét dựa trên LLVM, phụ trợ LL32 ESP32 mới này sẽ giúp hỗ trợ Rust cho ESP32 nhiều khả năng hơn. Thông báo thậm chí còn gợi ý về sự hỗ trợ của Rust trong tương lai này.


Xin chào, chào mừng bạn đến với IoT.SE! Tôi sẽ khuyến khích bạn chỉnh sửa câu trả lời này để làm cho nó hoàn chỉnh hơn. Như hiện tại, về cơ bản, nó chỉ là một chuỗi các liên kết với lời giải thích tối thiểu, và trông giống như một nhận xét hơn là một câu trả lời hoàn chỉnh. Sẽ tốt hơn nhiều để giải thích câu trả lời chi tiết hơn, với các liên kết chỉ để tham khảo. Cảm ơn!
nặc

8

Giống như Aurora0001 đã nói, hiện tại bạn không thể chạy Rust trên một chiếc ESP32 (hoặc bản ESP8266 cũ hơn).

Có một con chip rất giống nhau, RTL8710, được khuyến nghị sử dụng trong các tình huống bạn sử dụng ESP32, nhưng muốn sử dụng Rust.

Đây là một trang web nơi ai đó đi qua thiết lập của họ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.