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"
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.