Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@ These libraries were originally written by Ferrous Systems, and are based on the
[`cortex-m` libraries]: https://github.com/rust-embedded/cortex-m
[Rust Embedded Devices Working Group]: https://github.com/rust-embedded

There are currently three libraries here:
There are currently five libraries here:

* [cortex-ar](./cortex-ar/) - support library for Cortex-R and Cortex-A CPUs (like [cortex-m])
* [cortex-r-rt](./cortex-r-rt/) - run-time library for Cortex-R CPUs (like [cortex-m-rt])
* [cortex-a-rt](./cortex-a-rt/) - run-time library for Cortex-A CPUs (like [cortex-m-rt])
* [arm-targets](./arm-targets/) - a helper library for your build.rs that sets various `--cfg` flags according to the current target
* [cortex-ar-rt-macros](./cortex-ar-rt-macros/) - macros for `cortex-a-rt` and `cortex-r-rt` (this is an implementation detail - do not use this crate directly)

There are also example programs for QEMU in the [examples](./examples/) folder.

Expand Down
29 changes: 29 additions & 0 deletions arm-targets/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Change Log

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]

No changes

## [v0.2.0]

### Added

* `TargetInfo` struct
* Armv7-A support

### Changed

* The `process_target` function returns a `TargetInfo`

## [v0.1.0]

Initial release

[Unreleased]: https://github.com/rust-embedded/cortex-ar/compare/arm-targets-v0.1.0...HEAD
[v0.2.0]: https://github.com/rust-embedded/cortex-ar/compare/arm-targets-v0.1.0...arm-targets-v0.2.0
[v0.1.0]: https://github.com/rust-embedded/cortex-ar/releases/tag/arm-targets-v0.1.0
4 changes: 2 additions & 2 deletions arm-targets/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
authors = [
"Jonathan Pallant <[email protected]>",
"The Cortex-R Team <cortex-r@teams.rust-embedded.org>"
"The Embedded Devices Working Group Arm Team <arm@teams.rust-embedded.org>"
]
categories = ["development-tools::build-utils"]
description = "Compile-time feature detection for Arm processors"
Expand All @@ -12,6 +12,6 @@ readme = "README.md"
repository = "https://github.com/rust-embedded/cortex-ar.git"
homepage = "https://github.com/rust-embedded/cortex-ar.git"
rust-version = "1.59"
version = "0.1.0"
version = "0.2.0"

[dependencies]
11 changes: 8 additions & 3 deletions arm-targets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,17 @@ This allows you to write Rust code in your firmware like:

## Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.82.0 and up. It *might*
compile with older versions but that may change in any new patch release.
This crate is guaranteed to compile on stable Rust 1.59.0 and up, as recorded
by the `package.rust-version` property in `Cargo.toml`.

Increasing the MSRV is not considered a breaking change and may occur in a
minor version release (e.g. from `0.3.0` to `0.3.1`, because this is still a
`0.x` release).

## Licence

Copyright (c) Ferrous Systems, 2025
* Copyright (c) Ferrous Systems
* Copyright (c) The Rust Embedded Devices Working Group developers

Licensed under either [MIT](./LICENSE-MIT) or [Apache-2.0](./LICENSE-APACHE) at
your option.
Expand Down
8 changes: 6 additions & 2 deletions cortex-a-rt/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [unreleased]
## [Unreleased]

No changes

## [v0.1.0]

Initial release

[unreleased]: https://github.com/rust-embedded/cortex-ar/compare/cortex-a-rt-v0.1.0...HEAD
[Unreleased]: https://github.com/rust-embedded/cortex-ar/compare/cortex-a-rt-v0.1.0...HEAD
[v0.1.0]: https://github.com/rust-embedded/cortex-ar/releases/tag/cortex-a-rt-v0.1.0
6 changes: 3 additions & 3 deletions cortex-a-rt/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
authors = [
"Robin Mueller <[email protected]>",
"Jonathan Pallant <[email protected]>",
"The Cortex-R Team <cortex-r@teams.rust-embedded.org>"
"The Embedded Devices Working Group Arm Team <arm@teams.rust-embedded.org>"
]
description = "Run-Time support for Arm Cortex-A"
edition = "2021"
Expand All @@ -15,7 +15,7 @@ rust-version = "1.82"
version = "0.1.0"

[dependencies]
cortex-ar = {version = "0.1.0", path = "../cortex-ar"}
cortex-ar = {version = "0.2.0", path = "../cortex-ar"}
cortex-ar-rt-macros = { path = "../cortex-ar-rt-macros", version = "=0.1.0" }

[features]
Expand All @@ -26,7 +26,7 @@ eabi-fpu = []
vfp-dp = []

[build-dependencies]
arm-targets = {version = "0.1.0", path = "../arm-targets"}
arm-targets = {version = "0.2.0", path = "../arm-targets"}

[package.metadata.docs.rs]
targets = ["armv7a-none-eabihf"]
17 changes: 14 additions & 3 deletions cortex-a-rt/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
# Arm Cortex-A Run-Time
# Run-time support for Arm Cortex-A (AArch32)

This library implements a simple Arm vector table, suitable for getting into a
Rust application running in System Mode. It also provides a reference start
up method. Most Cortex-A based systems will require chip specific start-up
code, so the start-up method can over overriden.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can be overridden

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

other than this typo, lgtm

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, fixed.

Can you approve?


See <https://docs.rs/cortex-a-rt> for detailed documentation.

## Features

Expand All @@ -8,8 +15,12 @@

## Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.82.0 and up. It *might*
compile with older versions but that may change in any new patch release.
This crate is guaranteed to compile on stable Rust 1.82.0 and up, as recorded
by the `package.rust-version` property in `Cargo.toml`.

Increasing the MSRV is not considered a breaking change and may occur in a
minor version release (e.g. from `0.3.0` to `0.3.1`, because this is still a
`0.x` release).

## Licence

Expand Down
17 changes: 17 additions & 0 deletions cortex-ar-rt-macros/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Change Log

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]

No changes

## [v0.1.0]

Initial release

[Unreleased]: https://github.com/rust-embedded/cortex-ar/compare/cortex-ar-rt-macros-v0.1.0...HEAD
[v0.1.0]: https://github.com/rust-embedded/cortex-ar/releases/tag/cortex-ar-rt-macros-v0.1.0
2 changes: 1 addition & 1 deletion cortex-ar-rt-macros/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
authors = [
"Robin Mueller <[email protected]>",
"Jonathan Pallant <[email protected]>",
"The Cortex-R Team <cortex-r@teams.rust-embedded.org>"
"The Embedded Devices Working Group Arm Team <arm@teams.rust-embedded.org>"
]
description = "Run-Time macros for Arm Cortex-A and Cortex-R"
edition = "2021"
Expand Down
32 changes: 32 additions & 0 deletions cortex-ar-rt-macros/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Macros for `cortex-a-rt` and `cortex-r-rt`

This crate contains proc-macros that are re-exported through the following crates:

* [`cortex-a-rt`]
* [`cortex-r-rt`]

[cortex-a-rt]: https://crates.io/crates/cortex-a-rt
[cortex-r-rt]: https://crates.io/crates/cortex-r-rt

## Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.82.0 and up, as recorded
by the `package.rust-version` property in `Cargo.toml`.

Increasing the MSRV is not considered a breaking change and may occur in a
minor version release (e.g. from `0.3.0` to `0.3.1`, because this is still a
`0.x` release).

## Licence

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

Licensed under either [MIT](./LICENSE-MIT) or [Apache-2.0](./LICENSE-APACHE) 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.
15 changes: 12 additions & 3 deletions cortex-ar/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,27 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [unreleased]
## [Unreleased]

## [v0.2.0]

### Added

- General support for the Cortex-A architecture.
- New `sev` function in ASM module.
- Compiler fences for `dsb` and `isb`
- Added multi-core-safe critical-section implementation
- Additional EL1 MPU methods `set_region`, `set_attributes` and `background_region_enable`

### Changed

- Timer methods only need `&self` not `&mut self`
- The `dsb` and `isb` functions now include compiler fences
- Added `nomem`, `nostack` and `preserves_flags` options for ASM where applicable.

## [v0.1.0]

Initial release

[unreleased]: https://github.com/rust-embedded/cortex-ar/compare/cortex-ar-v0.1.0...HEAD
[Unreleased]: https://github.com/rust-embedded/cortex-ar/compare/cortex-ar-v0.2.0...HEAD
[v0.2.0]: https://github.com/rust-embedded/cortex-ar/compare/cortex-ar-v0.1.0...cortex-ar-v0.2.0
[v0.1.0]: https://github.com/rust-embedded/cortex-ar/releases/tag/cortex-ar-v0.1.0
6 changes: 3 additions & 3 deletions cortex-ar/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
authors = [
"Jonathan Pallant <[email protected]>",
"The Cortex-R Team <cortex-r@teams.rust-embedded.org>",
"The Embedded Devices Working Group Arm Team <arm@teams.rust-embedded.org>",
]
categories = [
"embedded",
Expand All @@ -22,7 +22,7 @@ readme = "README.md"
repository = "https://github.com/rust-embedded/cortex-ar.git"
homepage = "https://github.com/rust-embedded/cortex-ar.git"
rust-version = "1.82"
version = "0.1.0"
version = "0.2.0"

[dependencies]
arbitrary-int = "1.3.0"
Expand All @@ -32,7 +32,7 @@ critical-section = {version = "1.2.0", features = ["restore-state-u8"], optional
defmt = {version = "0.3", optional = true}

[build-dependencies]
arm-targets = {version = "0.1.0", path = "../arm-targets"}
arm-targets = {version = "0.2.0", path = "../arm-targets"}

[features]
# Adds a critical-section implementation that only disables interrupts.
Expand Down
11 changes: 8 additions & 3 deletions cortex-ar/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,17 @@ If you need a driver for the Arm Generic Interrupt Controller, see

## Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.82.0 and up. It *might*
compile with older versions but that may change in any new patch release.
This crate is guaranteed to compile on stable Rust 1.82.0 and up, as recorded
by the `package.rust-version` property in `Cargo.toml`.

Increasing the MSRV is not considered a breaking change and may occur in a
minor version release (e.g. from `0.3.0` to `0.3.1`, because this is still a
`0.x` release).

## Licence

Copyright (c) Ferrous Systems, 2025
* Copyright (c) Ferrous Systems
* Copyright (c) The Rust Embedded Devices Working Group developers

Licensed under either [MIT](./LICENSE-MIT) or [Apache-2.0](./LICENSE-APACHE) at
your option.
Expand Down
15 changes: 12 additions & 3 deletions cortex-r-rt/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,29 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [unreleased]
## [Unreleased]

## [v0.2.0]

## Added

- Added ABT und UND mode stack setup.
- Default exception handlers for undefined, prefetch and data abort exceptions
- Default exception handlers for undefined, prefetch abort and data abort exceptions
- SMP support
- Zeroing of registers on start-up
- `#[entry]` and `#[exception]` and `#[interrupt]` macros

## Changed

- Fixed interrupt handler so interrupts can be re-entrant
- Default Rust exception handler is now an empty permanent loop instead of a semihosting exit.
- The SVC asm trampoline can now be over-ridden
- The Undefined, Prefetch and Abort handlers can either return never, or can return a new address to continue executing from when the handler is over

## [v0.1.0]

Initial release

[unreleased]: https://github.com/rust-embedded/cortex-ar/compare/cortex-r-rt-v0.1.0...HEAD
[Unreleased]: https://github.com/rust-embedded/cortex-ar/compare/cortex-r-rt-v0.2.0...HEAD
[v0.2.0]: https://github.com/rust-embedded/cortex-ar/compare/cortex-r-rt-v0.1.0...cortex-r-rt-v0.2.0
[v0.1.0]: https://github.com/rust-embedded/cortex-ar/releases/tag/cortex-r-rt-v0.1.0
10 changes: 5 additions & 5 deletions cortex-r-rt/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
authors = [
"Jonathan Pallant <[email protected]>",
"The Cortex-R Team <cortex-r@teams.rust-embedded.org>"
"The Embedded Devices Working Group Arm Team <arm@teams.rust-embedded.org>"
]
categories = [
"embedded",
Expand All @@ -21,19 +21,19 @@ name = "cortex-r-rt"
readme = "README.md"
repository = "https://github.com/rust-embedded/cortex-r.git"
rust-version = "1.82"
version = "0.1.0"
version = "0.2.0"

[dependencies]
cortex-ar = {version = "0.1.0", path = "../cortex-ar"}
cortex-ar = {version = "0.2.0", path = "../cortex-ar"}
semihosting = {version = "0.1.18", features = ["stdio"]}
cortex-ar-rt-macros = { path = "../cortex-ar-rt-macros", version = "=0.1.0" }
cortex-ar-rt-macros = {path = "../cortex-ar-rt-macros", version = "=0.1.0"}

[features]
# Enable the FPU on start-up, even on a soft-float EABI target
eabi-fpu = []

[build-dependencies]
arm-targets = {version = "0.1.0", path = "../arm-targets"}
arm-targets = {version = "0.2.0", path = "../arm-targets"}

[package.metadata.docs.rs]
targets = ["armv7r-none-eabihf", "armv7r-none-eabihf"]
20 changes: 16 additions & 4 deletions cortex-r-rt/README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
# Arm Cortex-R Run-Time
# Run-time support for Arm Cortex-R (AArch32)

This library implements a simple Arm vector table, suitable for getting into a
Rust application running in System Mode. It also provides a reference start
up method. Most Cortex-R based systems will require chip specific start-up
code, so the start-up method can over overriden.

See <https://docs.rs/cortex-r-rt> for detailed documentation.

## Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.82.0 and up. It *might*
compile with older versions but that may change in any new patch release.
This crate is guaranteed to compile on stable Rust 1.82.0 and up, as recorded
by the `package.rust-version` property in `Cargo.toml`.

Increasing the MSRV is not considered a breaking change and may occur in a
minor version release (e.g. from `0.3.0` to `0.3.1`, because this is still a
`0.x` release).

## Licence

Copyright (c) Ferrous Systems, 2025
* Copyright (c) Ferrous Systems
* Copyright (c) The Rust Embedded Devices Working Group developers

Licensed under either [MIT](./LICENSE-MIT) or [Apache-2.0](./LICENSE-APACHE) at
your option.
Expand Down
Loading