diff options
Diffstat (limited to 'cortex-m-rt/examples')
-rw-r--r-- | cortex-m-rt/examples/alignment.rs | 4 | ||||
-rw-r--r-- | cortex-m-rt/examples/data_overflow.rs | 4 | ||||
-rw-r--r-- | cortex-m-rt/examples/device.rs | 5 | ||||
-rw-r--r-- | cortex-m-rt/examples/divergent-default-handler.rs | 19 | ||||
-rw-r--r-- | cortex-m-rt/examples/divergent-exception.rs | 18 | ||||
-rw-r--r-- | cortex-m-rt/examples/entry-static.rs | 20 | ||||
-rw-r--r-- | cortex-m-rt/examples/minimal.rs | 6 | ||||
-rw-r--r-- | cortex-m-rt/examples/override-exception.rs | 17 | ||||
-rw-r--r-- | cortex-m-rt/examples/pre_init.rs | 8 | ||||
-rw-r--r-- | cortex-m-rt/examples/state.rs | 12 | ||||
-rw-r--r-- | cortex-m-rt/examples/unsafe-default-handler.rs | 16 | ||||
-rw-r--r-- | cortex-m-rt/examples/unsafe-entry.rs | 13 | ||||
-rw-r--r-- | cortex-m-rt/examples/unsafe-exception.rs | 16 | ||||
-rw-r--r-- | cortex-m-rt/examples/unsafe-hard-fault.rs | 18 |
14 files changed, 144 insertions, 32 deletions
diff --git a/cortex-m-rt/examples/alignment.rs b/cortex-m-rt/examples/alignment.rs index 5635851..25d755d 100644 --- a/cortex-m-rt/examples/alignment.rs +++ b/cortex-m-rt/examples/alignment.rs @@ -4,13 +4,12 @@ #![no_main] #![no_std] -#[macro_use(entry)] extern crate cortex_m_rt as rt; extern crate panic_abort; use core::ptr; -entry!(main); +use rt::entry; static mut BSS1: u16 = 0; static mut BSS2: u8 = 0; @@ -19,6 +18,7 @@ static mut DATA2: u16 = 1; static RODATA1: &[u8; 3] = b"012"; static RODATA2: &[u8; 2] = b"34"; +#[entry] fn main() -> ! { unsafe { let _bss1 = ptr::read_volatile(&BSS1); diff --git a/cortex-m-rt/examples/data_overflow.rs b/cortex-m-rt/examples/data_overflow.rs index 396f1c8..ceec18b 100644 --- a/cortex-m-rt/examples/data_overflow.rs +++ b/cortex-m-rt/examples/data_overflow.rs @@ -5,13 +5,12 @@ #![no_main] #![no_std] -#[macro_use(entry)] extern crate cortex_m_rt as rt; extern crate panic_abort; use core::ptr; -entry!(main); +use rt::entry; // This large static array uses most of .rodata static RODATA: [u8; 48*1024] = [1u8; 48*1024]; @@ -20,6 +19,7 @@ static RODATA: [u8; 48*1024] = [1u8; 48*1024]; // without also overflowing RAM. static mut DATA: [u8; 16*1024] = [1u8; 16*1024]; +#[entry] fn main() -> ! { unsafe { let _bigdata = ptr::read_volatile(&RODATA as *const u8); diff --git a/cortex-m-rt/examples/device.rs b/cortex-m-rt/examples/device.rs index 4395db2..950a564 100644 --- a/cortex-m-rt/examples/device.rs +++ b/cortex-m-rt/examples/device.rs @@ -5,13 +5,12 @@ #![no_main] #![no_std] -#[macro_use(entry)] extern crate cortex_m_rt as rt; extern crate panic_semihosting; -// the program entry point -entry!(main); +use rt::entry; +#[entry] fn main() -> ! { loop {} } diff --git a/cortex-m-rt/examples/divergent-default-handler.rs b/cortex-m-rt/examples/divergent-default-handler.rs new file mode 100644 index 0000000..cbb8bb1 --- /dev/null +++ b/cortex-m-rt/examples/divergent-default-handler.rs @@ -0,0 +1,19 @@ +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_semihosting; + +use cortex_m_rt::{entry, exception}; + +#[entry] +fn foo() -> ! { + loop {} +} + +#[exception] +fn DefaultHandler(_irqn: i16) -> ! { + loop {} +} diff --git a/cortex-m-rt/examples/divergent-exception.rs b/cortex-m-rt/examples/divergent-exception.rs new file mode 100644 index 0000000..9998884 --- /dev/null +++ b/cortex-m-rt/examples/divergent-exception.rs @@ -0,0 +1,18 @@ +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_semihosting; + +use cortex_m_rt::{entry, exception}; + +#[entry] +fn foo() -> ! { + loop {} +} + +#[exception] +fn SysTick() -> ! { + loop {} +} diff --git a/cortex-m-rt/examples/entry-static.rs b/cortex-m-rt/examples/entry-static.rs new file mode 100644 index 0000000..1b2e118 --- /dev/null +++ b/cortex-m-rt/examples/entry-static.rs @@ -0,0 +1,20 @@ +//! `static mut` variables local to the entry point are safe to use + +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate cortex_m_rt as rt; +extern crate panic_semihosting; + +use rt::entry; + +#[entry] +fn main() -> ! { + static mut COUNT: u32 = 0; + + loop { + *COUNT += 1; + } +} diff --git a/cortex-m-rt/examples/minimal.rs b/cortex-m-rt/examples/minimal.rs index a036046..6f60180 100644 --- a/cortex-m-rt/examples/minimal.rs +++ b/cortex-m-rt/examples/minimal.rs @@ -5,13 +5,13 @@ #![no_main] #![no_std] -#[macro_use(entry)] extern crate cortex_m_rt as rt; extern crate panic_semihosting; -// the program entry point -entry!(main); +use rt::entry; +// the program entry point +#[entry] fn main() -> ! { loop {} } diff --git a/cortex-m-rt/examples/override-exception.rs b/cortex-m-rt/examples/override-exception.rs index 2f100a2..3e0af25 100644 --- a/cortex-m-rt/examples/override-exception.rs +++ b/cortex-m-rt/examples/override-exception.rs @@ -6,29 +6,24 @@ #![no_std] extern crate cortex_m; -#[macro_use(entry, exception)] extern crate cortex_m_rt as rt; extern crate panic_semihosting; use cortex_m::asm; -use rt::ExceptionFrame; - -// the program entry point -entry!(main); +use rt::{entry, exception, ExceptionFrame}; +#[entry] fn main() -> ! { loop {} } -exception!(*, default_handler); - -fn default_handler(_irqn: i16) { +#[exception] +fn DefaultHandler(_irqn: i16) { asm::bkpt(); } -exception!(HardFault, hard_fault); - -fn hard_fault(_ef: &ExceptionFrame) -> ! { +#[exception] +fn HardFault(_ef: &ExceptionFrame) -> ! { asm::bkpt(); loop {} diff --git a/cortex-m-rt/examples/pre_init.rs b/cortex-m-rt/examples/pre_init.rs index 7258936..00e2f2c 100644 --- a/cortex-m-rt/examples/pre_init.rs +++ b/cortex-m-rt/examples/pre_init.rs @@ -4,19 +4,17 @@ #![no_main] #![no_std] -#[macro_use(entry, pre_init)] extern crate cortex_m_rt as rt; extern crate panic_semihosting; -pre_init!(disable_watchdog); +use rt::{entry, pre_init}; +#[pre_init] unsafe fn disable_watchdog() { // Do what you need to disable the watchdog. } -// the program entry point -entry!(main); - +#[entry] fn main() -> ! { loop {} } diff --git a/cortex-m-rt/examples/state.rs b/cortex-m-rt/examples/state.rs index dbacdaf..573914f 100644 --- a/cortex-m-rt/examples/state.rs +++ b/cortex-m-rt/examples/state.rs @@ -5,20 +5,20 @@ #![no_main] #![no_std] -#[macro_use(entry, exception)] extern crate cortex_m_rt as rt; extern crate panic_semihosting; -// the program entry point -entry!(main); +use rt::{entry, exception}; +#[entry] fn main() -> ! { loop {} } // exception handler with state -exception!(SysTick, sys_tick, state: u32 = 0); +#[exception] +fn SysTick() { + static mut STATE: u32 = 0; -fn sys_tick(state: &mut u32) { - *state += 1; + *STATE += 1; } diff --git a/cortex-m-rt/examples/unsafe-default-handler.rs b/cortex-m-rt/examples/unsafe-default-handler.rs new file mode 100644 index 0000000..48bd31e --- /dev/null +++ b/cortex-m-rt/examples/unsafe-default-handler.rs @@ -0,0 +1,16 @@ +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_semihosting; + +use cortex_m_rt::{entry, exception}; + +#[entry] +fn foo() -> ! { + loop {} +} + +#[exception] +unsafe fn DefaultHandler(_irqn: i16) {} diff --git a/cortex-m-rt/examples/unsafe-entry.rs b/cortex-m-rt/examples/unsafe-entry.rs new file mode 100644 index 0000000..feb6f44 --- /dev/null +++ b/cortex-m-rt/examples/unsafe-entry.rs @@ -0,0 +1,13 @@ +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_semihosting; + +use cortex_m_rt::entry; + +#[entry] +unsafe fn foo() -> ! { + loop {} +} diff --git a/cortex-m-rt/examples/unsafe-exception.rs b/cortex-m-rt/examples/unsafe-exception.rs new file mode 100644 index 0000000..d67f06f --- /dev/null +++ b/cortex-m-rt/examples/unsafe-exception.rs @@ -0,0 +1,16 @@ +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_semihosting; + +use cortex_m_rt::{entry, exception}; + +#[entry] +fn foo() -> ! { + loop {} +} + +#[exception] +unsafe fn SysTick() {} diff --git a/cortex-m-rt/examples/unsafe-hard-fault.rs b/cortex-m-rt/examples/unsafe-hard-fault.rs new file mode 100644 index 0000000..b091d47 --- /dev/null +++ b/cortex-m-rt/examples/unsafe-hard-fault.rs @@ -0,0 +1,18 @@ +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_semihosting; + +use cortex_m_rt::{entry, exception, ExceptionFrame}; + +#[entry] +fn foo() -> ! { + loop {} +} + +#[exception] +unsafe fn HardFault(_ef: &ExceptionFrame) -> ! { + loop {} +} |