this post was submitted on 13 Nov 2023
100 points (92.4% liked)

Programming

17432 readers
246 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] JustEnoughDucks@feddit.nl 3 points 1 year ago (3 children)

I have been wanting to get into Rust, but as an Electronics Engineer I essentially only have experience coding on embedded devices along with python scripting for test automation and data processing (fuck MATLAB lol)

I am not a good at coding by any stretch. Everything I find on rust focuses on rust user-level or OS-level applications. Most of those concepts I don't follow well enough in any case.

Do you know of where I can follow tutorials, find more information, and dive into HALs for embedded applications?

[–] DrWypeout@programming.dev 10 points 1 year ago (1 children)

Rust actually has a shockingly good embedded story for some parts. ST-micro is very well covered. Espressif has first party support. Nordic parts are supported by Ferrous Systems who certify rust for ISO 26262 use. Msp430 is workable, but requires a fair bit of knowledge. The story is less good for anything else that’s not a Cortex part. RiscV is definitely getting there though.

https://doc.rust-lang.org/stable/embedded-book/

Ferrous systems knurling is actually a pretty incredible set of tools. I’d argue that they’re a better experience than most command-line c environments.

https://github.com/knurling-rs

They also have some pretty good walkthroughs for the Nordic and Espressif parts.

[–] JustEnoughDucks@feddit.nl 3 points 1 year ago

Perfect, I develop mostly on ST, Espressif, and some Nordic! I will check it out!

[–] nous@programming.dev 2 points 1 year ago

I would start by learning rust at a user level via the rust book to get you familiar with the language without the extra layers that embedded systems tend to add on top of things. Keep in mind that the embedded space in rust is still maturing, though it is maturing quite quickly. However one of the biggest limitations ATM is the amount of architectures available - if you need to target one not supported then you cannot use rust ATM (though there is quite a few different projects bringing in support for more architectures).

If you only need to use architectures that rust supports than once you have the basics of rust down take a look at the embedded book, the Discovery book and the Embedonomicon. Then there are various crates for different boards such as ruduino for the arduino uno, or the rp-pico for the raspberry pi pico, or various other crates for specific boards. There are also higher and lower level crates for things - like ones specific to a dev board and ones that are specific to a chipset.

Lastly, there are embedded frameworks like Embassy that are helpful for more complex applications.

[–] sebsch@discuss.tchncs.de 1 points 1 year ago* (last edited 1 year ago)

If you have an avr you could just use avr-hal.

The documentation is ok and if you used to work with arduino it should be straight forward.