[HN Gopher] Rust on Espressif chips
___________________________________________________________________
Rust on Espressif chips
Author : childintime
Score : 100 points
Date : 2023-07-01 15:39 UTC (7 hours ago)
(HTM) web link (mabez.dev)
(TXT) w3m dump (mabez.dev)
| coder543 wrote:
| This is a very timely article, since I've been trying to figure
| out how to get Embassy to work on any of the various ESP32 boards
| I have this weekend.
|
| Is there any good guide for getting Rust working on ESP32? (the
| old Xtensa dual core model, or the newer C3 or C6 models)
|
| I've also been looking at maybe trying an RP2040 board I have,
| but the Getting Started[0] guide seems very incomplete. It
| doesn't even seem to mention that you need a nightly build of
| Rust, but I'm pretty sure you do.
|
| I also doubt that running "cargo run" is going to result in an
| example being loaded onto any development board, so that seems
| like a confusing thing to show in the guide.
|
| [0]: https://embassy.dev/book/dev/getting_started.html
| JoshMcguigan wrote:
| "cargo run" does in fact flash the dev board. Cargo allows
| configuring a custom runner, which is what the embassy examples
| do [0].
|
| [0]: https://github.com/embassy-
| rs/embassy/blob/main/examples/stm...
| coder543 wrote:
| Ah, neat. That is a cool feature I didn't know cargo had!
| captaincrisp wrote:
| For ESP chips in general, the Rust on ESP Book [0] is pretty
| solid. Little short. I've been playing with writing a Watchy
| firmware in Rust (Watchy uses the dual-Xtensa ESP32-PICO-D4),
| and this was a great starting point.
|
| [0] https://esp-rs.github.io/book/installation/index.html
| coder543 wrote:
| I'll definitely take a look!
| aloer wrote:
| I have a bunch of various ESP32's lying around and I've been
| getting by with copy pasted arduino code.
|
| Works fine for most things but I've also told myself many times
| now that I would like to dive deeper when I find the time.
|
| My background is in web and Java. Never done C or C++.
|
| Is rust on esp already good enough for a beginner?
| bluejekyll wrote:
| Rust makes use of some more advanced type features than Java
| has. You'll want to focus on some of the differences between
| traits and interfaces. Additionally, in Java you're probably
| used to a lot of runtime dynamism, this is possible in Rust,
| but not something you usually need to use. To understand this
| better, look at dyn object safety.
|
| The biggest thing in Rust that you need to become familiar with
| from Java is the ownership system. First, Java is a default
| copy-by-reference language, whereas Rust is move by default. So
| learn the difference between, T, &T, and &mut T. Learning the
| ownership system will make you disappointed in Java's thread-
| safety story. Rust makes thread safety and multiple references
| to values very obvious and you need to be explicit about how
| things should be shared. This will probably be your biggest
| hurtle, based on my experience.
|
| Read the book, these concepts are all explained very nicely:
| https://doc.rust-lang.org/book/
| kelvie wrote:
| Don't know the answer to your question, but depending on what
| you want out of it, I find esphome with inlined C++ more than
| enough for most cases (for anyone that knows how to code in
| general).
|
| It's mostly declarative, like writing a kubernetes helm chart
| with some templating, which should be somewhat at home for web
| folks.
| heffer wrote:
| For a second I thought this would be about an issue with damage
| from iron oxide on Espressif chips.
|
| Yes, it's a weekend and also a holiday today ;-)
| jareklupinski wrote:
| I've never worked with Rust, but I'm very familiar with
| ESP32+VSCode/ESP-IDF, and eager to use something more high-level
| but still stable enough for unattended network-connected
| appliances
|
| is this a good time to learn and start writing for the ESP32 in
| Rust, or should I wait a little more?
| jrockway wrote:
| It's probably fine. I started using Go (tinygo) for
| microcontroller projects a few years ago and haven't looked
| back. If people can make Go work, I'm sure Rust is fine.
| junon wrote:
| This is a great time, in my opinion. Don't expect perfection,
| but things are really far along.
| smodo wrote:
| I'm very excited about trying rust on these devices. Are there
| any examples out there of projects using this in a more or less
| mature shape?
| sergiogasquez wrote:
| Yes! The training developed with Ferrous Systems (https://esp-
| rs.github.io/std-training/) contains several examples, and you
| can find many community projects in https://github.com/esp-
| rs/awesome-esp-rust#projects
| f_devd wrote:
| Afaik there while there are some OSS projects they aren't
| necessarily mature.
|
| The no_std hal is still a bit of a moving target so it's not as
| beginner friendly, the most mature here seems to be the SlimeVR
| firmware: https://github.com/SlimeVR/SlimeVR-
| Rust/tree/main/firmware
|
| For std hal there are a few more, OFMon being a good one:
| https://github.com/arashsm79/OFMon
| sacnoradhq wrote:
| Oh shit, I have some ESP32s from my COVID isolation AliExpress
| shopaholigasm.
|
| "ESP32 ESP32-CAM WiFi"
|
| "ESP8266 ESP32 ESP-32S"
|
| "SX1276 ESP32 with LoRa 868MHz-915MHz"
|
| Remember Chinese disposable brand sites tend to disappear without
| warning, so you always have to archive everything they have on
| their support sites, i.e., datasheets, code, examples, doc,
| diagrams, etc.
___________________________________________________________________
(page generated 2023-07-01 23:00 UTC)