- Notifications
You must be signed in to change notification settings - Fork256
A Hardware Abstraction Layer (HAL) for embedded systems
License
Apache-2.0, MIT licenses found
Licenses found
rust-embedded/embedded-hal
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A Hardware Abstraction Layer (HAL) for embedded systems
This project is developed and maintained by theHAL team.
Important
📣embedded-hal v1.0 is now released! Check out theannouncement blog post, theAPI documentation and themigration guide.
embedded-hal serves as a foundation for building an ecosystem of platform-agnostic drivers.(driver meaning library crates that let a target platform interface an external device like a digitalsensor or a wireless transceiver).
The advantage of this system is that by writing the driver as a generic library on topofembedded-hal driver authors can support any number of targetplatforms (e.g. Cortex-M microcontrollers, AVR microcontrollers, embedded Linux, etc.).
The advantage for application developers is that by adoptingembedded-hal they can unlock allthese drivers for their platform.
For functionality that goes beyond what is provided byembedded-hal, users are encouragedto use the target platform directly. Abstractions of common functionality can be proposed to beincluded intoembedded-hal as describedin this guide, though.
See more about the design goals inthis documentation section.
The mainembedded-hal project is not tied to a specific execution model like blocking or non-blocking.
| Crate | crates.io | Docs | |
|---|---|---|---|
| embedded-hal | Core traits, blocking version | ||
| embedded-hal-async | Core traits, async version | ||
| embedded-hal-nb | Core traits, polling version using thenb crate | ||
| embedded-hal-bus | Utilities for sharing SPI and I2C buses | ||
| embedded-can | Controller Area Network (CAN) traits | ||
| embedded-io | I/O traits (read, write, seek, etc.), blocking and nonblocking version. | ||
| embedded-io-async | I/O traits, async version | ||
| embedded-io-adapters | Adapters between theembedded-io andembedded-io-async traits and other IO traits (std,tokio,futures...) |
For a non-exhaustive list ofembedded-hal implementations and driver crates check theawesome-embedded-rust list.
You may be able to find even more HAL implementation crates and driver crates by searching for theembedded-hal-impl,embedded-hal-driver andembedded-hal keywordson crates.io.
This crate is guaranteed to compile on stable Rust 1.81 and up. Itmightcompile with older versions but that may change in any new patch release.
Seehere for details on how the MSRV may be upgraded.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE orhttp://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT orhttp://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submittedfor inclusion in the work by you, as defined in the Apache-2.0 license, shall bedual licensed as above, without any additional terms or conditions.
Contribution to this repository is organized under the terms of theRust Code ofConduct, the maintainers of this repository, theHAL team, promiseto intervene to uphold that code of conduct.
About
A Hardware Abstraction Layer (HAL) for embedded systems
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.