/aarch32

Low level access to ARM Aarch32 (Cortex-R and Cortex-A) processors

Primary LanguageRustApache License 2.0Apache-2.0

Rust on Arm AArch32

This repository provides support for:

  • Legacy Arm Processors, like the ARM7TDMI and ARM926
  • Armv7-R Processors, like the Arm Cortex-R5
  • Armv8-R AArch32 Processors, like the Arm Cortex-R52
  • Armv7-A Processors, like the Arm Cortex-A5
  • Armv8-A AArch32 Processors, like the Arm Cortex-A53 running in 32-bit mode

It does not support any M-Profile Processors (like the Arm Cortex-M3) as they have a fundamentally different interrupt vector table.

It also does not support processors running in AArch64 mode - A64 machine code uses different instructions for reading/writing system registers.

These libraries were originally written by Ferrous Systems, and are based on the cortex-m libraries from the Rust Embedded Devices Working Group.

There are currently five libraries here:

  • aarch32 - support library for AArch32 CPUs (like the cortex-m crate)
  • aarch32-rt - run-time library for AArch32 CPUs (like the cortex-m-rt crate)
  • arm-targets - a helper library for your build.rs that sets various --cfg flags according to the current target
  • aarch32-rt-macros - macros for aarch32-rt (this is an implementation detail - do not use this crate directly)

There are also example programs for QEMU in the examples folder.

Licence

  • Copyright (c) Ferrous Systems
  • Copyright (c) The Rust Embedded Devices Working Group developers

Licensed under either MIT or Apache-2.0 at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.