Awesome
imxrt-ral
A Rust register access layer (RAL), and SVD patches for NXP i.MX RT processors.
Goals
- Simple but useful register level access. It compiles quickly, and it's intuitive for existing embedded developers.
- RTIC support.
Getting Started
The imxrt-ral
is a lower-level interface for i.MX RT processor registers with useful macros. The imxrt-ral
is modeled after the stm32ral
crate. It provides direct access to the processor's registers. Use the imxrt-ral
if you'd like to create your own hardware abstraction layer, or a custom driver.
The imxrt-ral
supports these i.MX RT processors:
-
"imxrt1011"
-
"imxrt1015"
-
"imxrt1021"
-
"imxrt1051"
-
"imxrt1052"
-
"imxrt1061"
-
"imxrt1062"
-
"imxrt1064"
-
"imxrt1176_cm4"
-
"imxrt1176_cm7"
-
"imxrt1189_cm33"
-
"imxrt1189_cm7"
The RAL also requires a feature flag to specify the processor variant. The RAL is on crates.io. The RAL provides the "rt"
feature flag, and the interrupt table definition, that's used by the HAL.
Q/A
Why not use svd2rust
to generate a crate for register access?
See here and here. svd2rust
generates a crate that's nearly 1 million lines of Rust code, and it takes a few minutes to compile. On the other hand, the RAL compiles in a few seconds. Additionally, svd2rust
only supports one SVD input, but the RAL auto-generation script accepts multiple SVD inputs, sharing the common peripherals across processor families. This means that we can more easily support all i.MX RT processor variants from a single crate.
Contributing & Development
For contributions and development guidance, see CONTRIBUTING.md
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.