Bekerja dengan Rust pada ESP32

19

Saya ingin membangun perangkat gateway yang akan menggunakan ESP32. Ini harus terhubung ke port ModBus TCP Sensor. Untuk tujuan ini, saya ingin menggunakan implementasi Modbus Rust, yang sudah ada. Tetapi ada sedikit informasi tentang bagaimana saya bisa menjalankan kode Rust pada ESP32.

Adakah yang bisa menjelaskan topik ini?

sparkr
sumber
Lihatlah github.com/emosenkis/esp-rs
Francesco Frassinelli

Jawaban:

12

Rust menggunakan LLVM toolchain , yang merupakan sekumpulan program yang digunakan untuk mengkompilasi representasi perantara (IR) LLVM ke dalam kode spesifik platform. Prosesnya sedikit seperti ini:

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

Saat ini, tidak ada backend untuk arsitektur Xtensa yang digunakan oleh ESP32. Sayangnya, ini berarti Anda tidak dapat mengkompilasi kode Rust untuk ESP32 . Anda memang mengatakan instal dalam pertanyaan Anda, tetapi saya berasumsi Anda tidak bermaksud - sebaliknya, Anda ingin menjalankan kode Rust pada ESP32, bukan menginstal kompiler Rust di sana.

Jika Anda benar-benar ingin menggunakan Rust, secara teori, Anda dapat menggunakan LLVM C Backend , yang mengubah LLVM IR -> C, kemudian gunakan toolchain yang disediakan oleh Espressif untuk dikompilasi ke kode mesin ESP32. Namun, ini akan sulit , dan mungkin bahkan tidak berhasil sama sekali. Anda akan merasa jauh lebih mudah untuk menggigit peluru dan menggunakan C dalam kasus ini, yang memalukan, karena Rust adalah bahasa yang hebat, tetapi dukungan yang disematkannya tidak sebagus C saat ini.

Aurora0001
sumber
Apakah Anda mengetahui adanya papan Perangkat Keras lain yang mendukung Rust? Ya, seperti yang Anda katakan, saya hanya ingin menjalankan program Rust pada perangkat dan saya tentu tidak ingin kompiler di sana!
sparkr
@sparkr Daftar platform dan arsitektur yang didukung yang didukung Rust tersedia di sini ; kebanyakan dari platform tersebut adalah x86, x86-64 atau berbagai arsitektur ARM. Saya membayangkan semua itu jauh lebih mampu (dan mahal) daripada yang Anda inginkan, jadi itu benar-benar membatasi pilihan Anda dengan Rust. Terutama, meskipun, TI MSP430 terdaftar sebagai 'Tier 3' didukung perangkat, sehingga Rust mungkin hanya tentang pekerjaan. Tidak dapat berbicara dari pengalaman pribadi, karena saya belum menggunakan Rust untuk aplikasi tertanam.
Aurora0001
Sekarang ada komunitas yang didukung oleh garpu rustc untuk mendukung lengkungan Xtensa mabez.dev/blog/posts/esp32-rust
Tim McNamara
12

Xtensa baru saja merilis backend ESP32 / Espressif LLVM resmi dan dentingan front end. Lihat pengumuman mereka di sini: https://esp32.com/viewtopic.php?p=38466 Repos: https://github.com/espressif/llvm-xtensa & https://github.com/espressif/clang-xtensa As karat didasarkan pada LLVM, backend ESP32 LLVM baru ini akan membantu membuat dukungan Rust untuk ESP32 lebih mungkin. Pengumuman itu bahkan mengisyaratkan dukungan Rust yang akan datang.

NickBroon
sumber
Hai, selamat datang di IoT.SE! Saya mendorong Anda untuk mengedit jawaban ini agar lebih lengkap. Seperti berdiri, itu pada dasarnya hanya serangkaian tautan dengan penjelasan minimal, dan lebih mirip komentar daripada jawaban lengkap. Akan jauh lebih baik untuk menjelaskan jawabannya secara lebih rinci, dengan tautan untuk referensi saja. Terima kasih!
anonim2
8

Seperti kata Aurora0001, Anda tidak dapat menjalankan Rust pada ESP32 saat ini (atau ESP8266 yang lebih lama).

Ada chip yang sangat mirip, RTL8710, yang direkomendasikan untuk digunakan dalam situasi di mana Anda akan menggunakan ESP32, tetapi ingin menggunakan Rust.

Berikut adalah situs web di mana seseorang berjalan melalui pengaturan mereka.

Theodore Nordsieck
sumber