1#![no_std]
2#![allow(clippy::empty_loop)]
3#![deny(warnings)]
4
5use core::fmt::Write;
6use core::panic::PanicInfo;
7use cortex_m::interrupt;
8
9struct RAM
10{
11 offset: u32,
12}
13impl core::fmt::Write for RAM
14{
15 fn write_str(&mut self, s: &str) -> Result<(), core::fmt::Error>
16 {
17 extern "C"
18 {
19 static mut __sbss: u8;
20 }
21 let dat = s.as_bytes();
22 let len = dat.len();
23 unsafe
24 {
25 core::ptr::copy(
26 dat.as_ptr() as *mut u8,
27 (&mut __sbss as *mut u8).offset(self.offset as isize),
28 len
29 )
30 };
31 self.offset += len as u32;
32 Ok(())
33 }
34}
35#[panic_handler]
37fn panic(info: &PanicInfo) -> !
38{
39 interrupt::disable();
40 writeln!(RAM { offset: 0 }, "{}", info).ok();
41 loop {}
42}