|
|
|
@ -1,8 +1,10 @@
|
|
|
|
|
#![no_std]
|
|
|
|
|
#![no_main]
|
|
|
|
|
|
|
|
|
|
use core::{panic::PanicInfo, ptr::write_volatile};
|
|
|
|
|
use riscv::asm::nop;
|
|
|
|
|
use core::{
|
|
|
|
|
panic::PanicInfo,
|
|
|
|
|
ptr::{read_volatile, write_volatile},
|
|
|
|
|
};
|
|
|
|
|
use riscv_rt::entry;
|
|
|
|
|
|
|
|
|
|
#[panic_handler]
|
|
|
|
@ -10,15 +12,30 @@ fn panic_handler(_info: &PanicInfo) -> ! {
|
|
|
|
|
loop {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static INIT_VALUE: u32 = 0b11011011;
|
|
|
|
|
static INIT_VALUE_2: i32 = -0x50000000;
|
|
|
|
|
#[used]
|
|
|
|
|
static TEXT: &str = "lmao YEET";
|
|
|
|
|
|
|
|
|
|
#[entry]
|
|
|
|
|
fn main() -> ! {
|
|
|
|
|
const MEM_ADDR: *mut u32 = 0x1000_0004 as *mut u32;
|
|
|
|
|
const MEM_ADDR: *mut u32 = 0x8000_0004 as *mut u32;
|
|
|
|
|
const MEM_ADDR_2: *mut i32 = 0x8000_0008 as *mut i32;
|
|
|
|
|
loop {
|
|
|
|
|
for i in 0..100 {
|
|
|
|
|
unsafe {
|
|
|
|
|
write_volatile(MEM_ADDR, 0b01101100+i);
|
|
|
|
|
unsafe {
|
|
|
|
|
write_volatile(MEM_ADDR, INIT_VALUE);
|
|
|
|
|
for _ in 0..32 {
|
|
|
|
|
let mut value = read_volatile(MEM_ADDR);
|
|
|
|
|
value <<= 1;
|
|
|
|
|
write_volatile(MEM_ADDR, value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
write_volatile(MEM_ADDR_2, INIT_VALUE_2);
|
|
|
|
|
for _ in 0..32 {
|
|
|
|
|
let mut value = read_volatile(MEM_ADDR_2);
|
|
|
|
|
value >>= 1;
|
|
|
|
|
write_volatile(MEM_ADDR_2, value);
|
|
|
|
|
}
|
|
|
|
|
nop();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|