embedded-hal
nomicon
embedded-hal | nomicon | |
---|---|---|
11 | 87 | |
1,822 | 1,721 | |
2.6% | 1.2% | |
8.6 | 5.1 | |
26 days ago | 4 days ago | |
Rust | CSS | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
embedded-hal
-
Announcing the new async-hal! Featuring embedded IO traits and new interrupt-based executor
What is the difference between this and https://github.com/rust-embedded/embedded-hal/tree/master/embedded-hal-async?
-
Introducing async-hal! A hardware abstraction layer for embedded devices with futures
Maybe worth mentioning if you (or someone else) hasn't seen it before, the embedded-wg is also working on an async version of the embedded-hal traits, embedded-hal-async.
-
Microsoft is rewriting core Windows libraries in Rust
In that case you want to keep most of the unsafe in the HAL crate, and expose an interface as safe as possible. To give you an idea, is it since 2018 that a "generic" DMA safe implementation is in discussion https://github.com/rust-embedded/embedded-hal/issues/37
-
Stop Comparing Rust to Old C++
Does something like embedded hal exist in the C/C++ world? ( https://github.com/rust-embedded/embedded-hal )
-
not entirely new to rust, but very new to rust+arduino,.... eli5 the differences between these projects?
worth mentioning also is embedded-hal but my understanding is this has absolutely nothing to do with arduino, so despite being embedded probably not what I want.
-
Google announce secure Rust-based OS for embedded system
The ecosystem is great and growing, It really benefits from a language-standard embedded HAL which makes writing cross-platform drivers a cinch - e.g., you can write a bit-banged MDIO driver and use it on anything that has a timer and a two IO pins, from a Zynq Ultrascale to an arduino. Sure, this is possible in C - but Rust really benefits from a less fragmented ecosystem here.
-
Want to volunteer for your projects
Have you thought about writing/contributing to embedded-hal compatible crates (a sensor module driver for example)? It's always good to contribute to an eco system.
-
STM32F4 Embedded Rust at the HAL: GPIO Button Controlled Blinking
๐ At the time of writing this post, it came to my attention that there is an additional HAL that targets STM32 device families (the stm32-hal). From what I figure, right now there seem to be two approaches for developing HALs. The first approach is trait driven so to speak where the embedded-hal is used as a foundation. The second approach is more application-driven and provides a high-level API that targets several families of a device. However, this exists only for the stm32 through the stm32-hal. Right now, the first approach is what I found to be more widespread as it covers different microcontrollers and what this post is based on.
-
Why doesnโt V8 fit on my microcontroller?
I can write a library for an OLED device that is driven by an platform agnostic I2C device that will run on any microcontroller that implements the necessary abstractions.
The `embedded-hal` (https://github.com/rust-embedded/embedded-hal) are these abstractions that allow this to happen
-
Hands-On: The RISC-V ESP32-C3 Will Be Your New ESP8266
Yes but there needs to be appropriate libraries available such as HAL. Well it doesn't have to but it makes my life as a beginner in both much easier. But its probably matter of time because i predict that this chip will be very popular in Rust embedded.
nomicon
-
[Media] I'm comparing writing a double-linked list in C++ vs with Rust. The Rust implementation looks substantially more complex. Is this a bad example? (URL in the caption)
itโs even written by the same person that wrote the Nomicon (the guide to the dark arts of unsafe)
-
Rust books to read
If you want to dive deeper you can always have other options but now there are concrete cases, if you want to do low level thing https://doc.rust-lang.org/nomicon/ while if you want multi thread/concurrency stuff https://marabos.nl/atomics/ . There are many many books so you will have to point yourself to what you want
-
Thread-shared boolean flag
Nonononono. SeqCst is the most error prone memory order: https://github.com/rust-lang/nomicon/issues/166
-
[Media] Hashmap behaviour inside a loop due to lifetime issue
Hope this helps. For more details, see the Rustonomicon. I referenced the subtyping chapter here extensively.
-
Unsafe Rust
Nice video! Glad I could help out. This stuff is hard, and I'm still learning a lot about it myself even years later. The Rustonomicon is a great read if you haven't already.
-
Stepping up the YAML engineer game
Have you got a moment to read through the good book , after reading through this perhaps try the Rustonomicon.
- Questions about ownership rule
-
CppCon 2022 Best Practices Every C++ Programmer Needs to Follow โ Oz Syed
That is not what UB means. Undefined Behaviour is behaviour that the compiler is allowed to assume will never happen, and which can consequently cause miscompilations due to optimisation passes gone wrong if it does in fact occur in the source code.
It's true that Rust does not have a written specification that clearly delineates what is and isn't UB in a single place. But:
1. UB is impossible in safe code (modulo bugs in unsafe code)
2. There are resources such as the Rustinomicon (https://doc.rust-lang.org/nomicon/) that provide a detailed guide on what is and isn't allowed in unsafe code.
In practice, it's much easier to avoid UB in Rust than it is in C++.
-
How to write deserializer for custom binary protocol?
However, this is a wide topic out of scope for a Reddit comment, so maybe just read the Rustonomicon. It explains everything about data handling in Rust.
-
Performance critical ML: How viable is Rust as an alternative to C++
The ownership model & borrow checker makes rust a bit of an awkward language in which to write complex data structures like trees and graphs. It can be done - since you can always use raw pointers & unsafe code when you absolutely need to to treat rust like C. But the language fights you, and the community can get a bit moralistic about this sort of thing. The rust nomicon is a fantastic resource for learning the limits of the borrow checker, and where and how to use unsafe code correctly. You will need unsafe less than you think you will, but sometimes you will have no choice.
What are some alternatives?
quickjs-esp32 - QuickJS port for ESP32
book - The Rust Programming Language
microzig - Unified abstraction layer and HAL for several microcontrollers
mdBook - Create book from markdown files. Like Gitbook but implemented in Rust
bl602-hal - Hardware Abstract Layer for BL602 RISC-V WiFi + BLE SoC in embedded Rust
rust-ffmpeg - Safe FFmpeg wrapper.
nesper - Program the ESP32 with Nim! Wrappers around ESP-IDF API's.
Theseus - Theseus is a modern OS written from scratch in Rust that explores ๐ข๐ง๐ญ๐ซ๐๐ฅ๐ข๐ง๐ ๐ฎ๐๐ฅ ๐๐๐ฌ๐ข๐ ๐ง: closing the semantic gap between compiler and hardware by maximally leveraging the power of language safety and affine types. Theseus aims to shift OS responsibilities like resource management into the compiler.
esp8266-quickjs - An attempt on getting QuickJS working on ESP8266 hardware
Exercism - website - The codebase for Exercism's website.
embassy - Modern embedded framework, using Rust and async.
miri - An interpreter for Rust's mid-level intermediate representation