Compare commits

..

2 Commits

Author SHA1 Message Date
D4VID d2bdc7570e Test screen r/w
3 months ago
D4VID 43a3f12585 Print numbers
3 months ago

@ -2,21 +2,21 @@
use core::ptr::{read_volatile, write_volatile}; use core::ptr::{read_volatile, write_volatile};
const BASE_POINTER: u32 = 0x1000_0000; pub const BASE_POINTER: u32 = 0x1000_0000;
const NUMBER_DISPLAY_OFFSET: u32 = 0x00; pub const NUMBER_DISPLAY_OFFSET: u32 = 0x00;
const RANDOM_NUMBER_OFFSET: u32 = 0x04; pub const RANDOM_NUMBER_OFFSET: u32 = 0x04;
const BUTTONS_OFFSET: u32 = 0x08; pub const BUTTONS_OFFSET: u32 = 0x08;
const TEXT_DISPLAY_OFFSET: u32 = 0x0C; pub const TEXT_DISPLAY_OFFSET: u32 = 0x0C;
const KEYBOARD_OFFSET: u32 = 0x10; pub const KEYBOARD_OFFSET: u32 = 0x10;
const SCREEN_OFFSET: u32 = 0x80; pub const SCREEN_OFFSET: u32 = 0x80;
const NUMBER_DISPLAY_POINTER: *mut u32 = (BASE_POINTER + NUMBER_DISPLAY_OFFSET) as *mut u32; pub const NUMBER_DISPLAY_POINTER: *mut u32 = (BASE_POINTER + NUMBER_DISPLAY_OFFSET) as *mut u32;
const RANDOM_NUMBER_POINTER: *mut u32 = (BASE_POINTER + RANDOM_NUMBER_OFFSET) as *mut u32; pub const RANDOM_NUMBER_POINTER: *mut u32 = (BASE_POINTER + RANDOM_NUMBER_OFFSET) as *mut u32;
const BUTTONS_POINTER: *mut u8 = (BASE_POINTER + BUTTONS_OFFSET) as *mut u8; pub const BUTTONS_POINTER: *mut u8 = (BASE_POINTER + BUTTONS_OFFSET) as *mut u8;
const TEXT_DISPLAY_POINTER: *mut u8 = (BASE_POINTER + TEXT_DISPLAY_OFFSET) as *mut u8; pub const TEXT_DISPLAY_POINTER: *mut u8 = (BASE_POINTER + TEXT_DISPLAY_OFFSET) as *mut u8;
const KEYBOARD_POINTER: *mut u32 = (BASE_POINTER + KEYBOARD_OFFSET) as *mut u32; pub const KEYBOARD_POINTER: *mut u32 = (BASE_POINTER + KEYBOARD_OFFSET) as *mut u32;
const SCREEN_POINTER: *mut u32 = (BASE_POINTER + SCREEN_OFFSET) as *mut u32; pub const SCREEN_POINTER: *mut u32 = (BASE_POINTER + SCREEN_OFFSET) as *mut u32;
pub struct Screen {} pub struct Screen {}
impl Screen { impl Screen {

@ -1,15 +1,15 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
use core::{fmt::Write, panic::PanicInfo}; use core::{fmt::Write, panic::PanicInfo, ptr::{read_volatile, write_volatile}};
use lwcpu::{NumberDisplay, TextDisplay}; use lwcpu::{NumberDisplay, TextDisplay, SCREEN_POINTER};
use riscv_rt::entry; use riscv_rt::entry;
#[panic_handler] #[panic_handler]
fn panic_handler(_info: &PanicInfo) -> ! { fn panic_handler(_info: &PanicInfo) -> ! {
NumberDisplay::display_number(0xDEADC0DE); NumberDisplay::display_number(0xDEADC0DE);
let mut text = TextDisplay{}; let mut text = TextDisplay{};
let _ = write!(text, "Panic: {}", _info.message()); let _ = write!(text, "Panic: {} 1234", _info.message());
loop {} loop {}
} }
@ -18,6 +18,13 @@ const HELLO_WORLD: &str = " Hello world!";
#[entry] #[entry]
fn main() -> ! { fn main() -> ! {
let mut text = TextDisplay{}; let mut text = TextDisplay{};
unsafe {
write_volatile(SCREEN_POINTER, 0x001166ff);
write_volatile(SCREEN_POINTER.offset(1), 0xAAAAAAAA);
let ptr = SCREEN_POINTER as *mut u8;
let b = read_volatile(ptr.offset(1));
write_volatile(ptr.offset(5), b);
}
loop { loop {
let _ = text.write_str(HELLO_WORLD); let _ = text.write_str(HELLO_WORLD);
panic!("Lmao") panic!("Lmao")

Loading…
Cancel
Save