การทำงานกับสนิมบน ESP32


19

ฉันต้องการสร้างอุปกรณ์เกตเวย์ซึ่งจะใช้ ESP32 สิ่งนี้ควรเชื่อมต่อกับพอร์ต ModBus TCP ของเซ็นเซอร์ เพื่อจุดประสงค์นี้ฉันต้องการใช้การดำเนินการ Modbus Rust ซึ่งมีอยู่แล้ว แต่มีข้อมูลน้อยมากเกี่ยวกับวิธีที่ฉันสามารถทำให้ Rust code ทำงานบน ESP32 ได้

ทุกคนสามารถหลั่งน้ำตาแสงในหัวข้อนี้?


คำตอบ:


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 อย่างแท้จริงคุณสามารถใช้LLVM C Backendซึ่งแปลง LLVM IR -> C จากนั้นใช้toolchain ที่ Espressif จัดทำเพื่อรวบรวมรหัสเครื่องของ ESP32 อย่างไรก็ตามสิ่งนี้จะเป็นเรื่องยากและอาจไม่ได้ผลเลย คุณจะพบว่ามันง่ายกว่าที่จะกัดกระสุนและใช้ C ในกรณีนี้ซึ่งเป็นความอัปยศเพราะ Rust เป็นภาษาที่ยอดเยี่ยม แต่การสนับสนุนที่ฝังอยู่นั้นไม่ดีเท่า C ในตอนนี้


คุณทราบถึงบอร์ดฮาร์ดแวร์อื่น ๆ ที่สนับสนุนสนิมหรือไม่ ใช่เช่นคุณบอกว่าฉันแค่ต้องการเรียกใช้โปรแกรม Rust บนอุปกรณ์และฉันไม่ต้องการคอมไพเลอร์ที่นั่น!
sparkr

@sparkr รายการแพลตฟอร์มที่สนับสนุนและสถาปัตยกรรมที่สนิมสนับสนุนที่มีอยู่ที่นี่ ; แพลตฟอร์มส่วนใหญ่นั้นมีทั้ง x86, x86-64 หรือสถาปัตยกรรม ARM ต่างๆ ฉันคิดว่าทั้งหมดนั้นมีความสามารถ (และแพง) กว่าที่คุณต้องการดังนั้นมันจึง จำกัด ตัวเลือกของคุณด้วย Rust ยวดแม้ว่าTI MSP430จะปรากฏเป็น 'เงินกองทุนชั้นที่ 3' ได้รับการสนับสนุนอุปกรณ์เพื่อสนิมอาจเป็นเพียงเกี่ยวกับการทำงาน ไม่สามารถพูดจากประสบการณ์ส่วนตัวได้เนื่องจากฉันยังไม่ได้ใช้ Rust สำหรับแอปพลิเคชันแบบฝัง
Aurora0001

ขณะนี้มีชุมชนสนับสนุนส้อมของสนิมเพื่อสนับสนุน Xtensa arch mabez.dev/blog/posts/esp32-rust
Tim McNamara

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 แต่ต้องการใช้สนิม

นี่คือเว็บไซต์ที่มีคนเข้ามาตั้งค่าของพวกเขา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.