#![allow(clippy::empty_loop)]
#![deny(missing_docs)]
#![deny(warnings)]
#![no_std]
use core::fmt::Write;
use core::panic::PanicInfo;
use cortex_m::interrupt;
struct Ram {
offset: u32,
}
impl core::fmt::Write for Ram {
fn write_str(&mut self, s: &str) -> Result<(), core::fmt::Error> {
extern "C" {
static mut __sbss: u8;
}
let data = s.as_bytes();
let len = data.len();
unsafe {
core::ptr::copy(
data.as_ptr() as *mut u8,
(&mut __sbss as *mut u8).offset(self.offset as isize),
len,
)
};
self.offset += len as u32;
Ok(())
}
}
#[panic_handler]
fn panic(info: &PanicInfo) -> ! {
interrupt::disable();
writeln!(Ram { offset: 0 }, "{}", info).ok();
loop {}
}