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};
const BASE_POINTER: u32 = 0x1000_0000;
pub const BASE_POINTER: u32 = 0x1000_0000;
const NUMBER_DISPLAY_OFFSET: u32 = 0x00;
const RANDOM_NUMBER_OFFSET: u32 = 0x04;
const BUTTONS_OFFSET: u32 = 0x08;
const TEXT_DISPLAY_OFFSET: u32 = 0x0C;
const KEYBOARD_OFFSET: u32 = 0x10;
const SCREEN_OFFSET: u32 = 0x80;
pub const NUMBER_DISPLAY_OFFSET: u32 = 0x00;
pub const RANDOM_NUMBER_OFFSET: u32 = 0x04;
pub const BUTTONS_OFFSET: u32 = 0x08;
pub const TEXT_DISPLAY_OFFSET: u32 = 0x0C;
pub const KEYBOARD_OFFSET: u32 = 0x10;
pub const SCREEN_OFFSET: u32 = 0x80;
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;
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;
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 NUMBER_DISPLAY_POINTER: *mut u32 = (BASE_POINTER + NUMBER_DISPLAY_OFFSET) as *mut u32;
pub const RANDOM_NUMBER_POINTER: *mut u32 = (BASE_POINTER + RANDOM_NUMBER_OFFSET) as *mut u32;
pub const BUTTONS_POINTER: *mut u8 = (BASE_POINTER + BUTTONS_OFFSET) as *mut u8;
pub const TEXT_DISPLAY_POINTER: *mut u8 = (BASE_POINTER + TEXT_DISPLAY_OFFSET) as *mut u8;
pub const KEYBOARD_POINTER: *mut u32 = (BASE_POINTER + KEYBOARD_OFFSET) as *mut u32;
pub const SCREEN_POINTER: *mut u32 = (BASE_POINTER + SCREEN_OFFSET) as *mut u32;
pub struct Screen {}
impl Screen {

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

Loading…
Cancel
Save