Fixes an issue where one could double take the cortex_m Peripheral

Added qemu test

Added comment

Typo

Add cfg for homogeneous

More cfg

Now multicore working

Add .run file
This commit is contained in:
Emil Fresk 2020-06-30 21:23:35 +02:00
parent 8a4f9c6b8a
commit d9e8b68662
4 changed files with 25 additions and 0 deletions

View file

@ -174,6 +174,8 @@ jobs:
cfg
pool
ramfunc
peripherals-taken
)
for ex in ${exs[@]}; do

View file

View file

@ -0,0 +1,16 @@
#![deny(unsafe_code)]
#![deny(warnings)]
#![no_main]
#![no_std]
use cortex_m_semihosting::debug;
use panic_semihosting as _;
#[rtic::app(device = lm3s6965)]
const APP: () = {
#[init]
fn main(_: main::Context) {
assert!(cortex_m::Peripherals::take().is_none());
debug::exit(debug::EXIT_SUCCESS);
}
};

View file

@ -43,6 +43,13 @@ pub fn codegen(
let mut core: rtic::export::Peripherals = core::mem::transmute(());
));
if app.args.cores == 1 {
stmts.push(quote!(
// To set the variable in cortex_m so the peripherals cannot be taken multiple times
let _ = cortex_m::Peripherals::steal();
));
}
let device = extra.device;
let nvic_prio_bits = quote!(#device::NVIC_PRIO_BITS);