embedded-trainings-2020/advanced/firmware/src/bin/stack_overflow.rs

30 lines
559 B
Rust
Raw Normal View History

2021-01-22 09:29:21 +00:00
#![no_main]
#![no_std]
use cortex_m::asm;
use cortex_m_rt::entry;
use panic_log as _; // panic handler
#[entry]
fn main() -> ! {
// board initialization
dk::init().unwrap();
2021-01-22 11:40:17 +00:00
log::info!("provoking stack overflow...");
spam();
2021-01-22 09:29:21 +00:00
loop {
asm::bkpt();
}
}
#[inline(never)]
2021-01-22 11:40:17 +00:00
fn spam() {
2021-01-22 14:01:18 +00:00
// allocate and initialize one kilobyte of stack memory to provoke stack overflow
let use_stack = [0xAA_u32; 1024];
2021-01-22 09:29:21 +00:00
2021-01-22 14:01:18 +00:00
log::info!("address of current `use_stack`: {:?}", &use_stack as *const u32);
2021-01-22 11:40:17 +00:00
spam(); // infinite recursion
2021-01-22 09:29:21 +00:00
}