note that the timer queue is not supported on ARMv6-M

This commit is contained in:
Jorge Aparicio 2018-12-16 19:34:16 +01:00
parent d35f5bc0b0
commit 06c1e2f9b4
6 changed files with 33 additions and 13 deletions

View file

@ -9,8 +9,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Changed ### Changed
- This crate now compiles on 1.31-beta and will compile on the stable 1.31 - This crate now compiles on stable 1.31.
release.
- [breaking-change] The `app!` macro has been transformed into an attribute. See - [breaking-change] The `app!` macro has been transformed into an attribute. See
the documentation for details. the documentation for details.

View file

@ -40,7 +40,9 @@ behave the way you expect please open [an issue]!
- **Highly efficient memory usage**: All the tasks share a single call stack and - **Highly efficient memory usage**: All the tasks share a single call stack and
there's no hard dependency on a dynamic memory allocator. there's no hard dependency on a dynamic memory allocator.
- **All Cortex-M devices are fully supported**. - **All Cortex-M devices are supported**. The core features of RTFM are
supported on all Cortex-M devices. The timer queue is currently only supported
on ARMv7-M devices.
- This task model is amenable to known WCET (Worst Case Execution Time) analysis - This task model is amenable to known WCET (Worst Case Execution Time) analysis
and scheduling analysis techniques. (Though we haven't yet developed Rust and scheduling analysis techniques. (Though we haven't yet developed Rust

View file

@ -7,6 +7,6 @@
This book contains user level documentation for the Real Time For the Masses This book contains user level documentation for the Real Time For the Masses
(RTFM) framework. The API reference can be found [here](../api/rtfm/index.html). (RTFM) framework. The API reference can be found [here](../api/rtfm/index.html).
{{#include ../../README.md:5:53}} {{#include ../../README.md:5:55}}
{{#include ../../README.md:59:}} {{#include ../../README.md:61:}}

View file

@ -3,6 +3,10 @@ use std::env;
fn main() { fn main() {
let target = env::var("TARGET").unwrap(); let target = env::var("TARGET").unwrap();
if target.starts_with("thumbv6m") {
println!("cargo:rustc-cfg=armv6m")
}
if target.starts_with("thumbv7m") | target.starts_with("thumbv7em") { if target.starts_with("thumbv7m") | target.starts_with("thumbv7em") {
println!("cargo:rustc-cfg=armv7m") println!("cargo:rustc-cfg=armv7m")
} }

View file

@ -12,11 +12,17 @@ main() {
esac esac
cargo check --target $T cargo check --target $T
cargo check --features timer-queue --target $T if [ $TARGET != thumbv6m-none-eabi ]; then
cargo check --features timer-queue --target $T
fi
if [ $TRAVIS_RUST_VERSION = beta ]; then if [ $TRAVIS_RUST_VERSION != nightly ]; then
rm -f .cargo/config rm -f .cargo/config
cargo doc --features timer-queue if [ $TARGET != thumbv6m-none-eabi ]; then
cargo doc --features timer-queue
else
cargo doc
fi
( cd book && mdbook build ) ( cd book && mdbook build )
local td=$(mktemp -d) local td=$(mktemp -d)
@ -33,7 +39,9 @@ main() {
fi fi
cargo check --target $T --examples cargo check --target $T --examples
cargo check --features timer-queue --target $T --examples if [ $TARGET != thumbv6m-none-eabi ]; then
cargo check --features timer-queue --target $T --examples
fi
# run-pass tests # run-pass tests
case $T in case $T in
@ -76,11 +84,13 @@ main() {
diff -u ci/expected/$ex.run - diff -u ci/expected/$ex.run -
fi fi
cargo run --features timer-queue --example $ex --target $T | \ if [ $TARGET != thumbv6m-none-eabi ]; then
diff -u ci/expected/$ex.run - cargo run --features timer-queue --example $ex --target $T | \
diff -u ci/expected/$ex.run -
cargo run --features timer-queue --example $ex --target $T --release | \ cargo run --features timer-queue --example $ex --target $T --release | \
diff -u ci/expected/$ex.run - diff -u ci/expected/$ex.run -
fi
done done
esac esac
} }

View file

@ -44,6 +44,11 @@ pub mod export;
#[cfg(feature = "timer-queue")] #[cfg(feature = "timer-queue")]
mod tq; mod tq;
#[cfg(all(feature = "timer-queue", armv6m))]
compile_error!(
"The `timer-queue` feature is currently not supported on ARMv6-M (`thumbv6m-none-eabi`)"
);
/// Core peripherals /// Core peripherals
/// ///
/// This is `cortex_m::Peripherals` minus the peripherals that the RTFM runtime uses /// This is `cortex_m::Peripherals` minus the peripherals that the RTFM runtime uses