Test screen r/w

master
D4VID 3 months ago
parent 43a3f12585
commit d2bdc7570e

@ -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,8 +1,8 @@
#![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]
@ -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