firmware for my Touchscreen E-Paper Input Module for Framework Laptop 16
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

eepy: migrate to rust 2024 workspace: migrate to v3 resolver

+15 -15
+1 -1
Cargo.toml
··· 1 1 [workspace] 2 - resolver = "2" 2 + resolver = "3" 3 3 4 4 members = [ 5 5 "fw16-epd-bsp",
+1 -1
eepy/Cargo.toml
··· 1 1 [package] 2 2 name = "eepy" 3 3 version = "0.1.0-alpha" 4 - edition = "2021" 4 + edition = "2024" 5 5 6 6 [dependencies] 7 7 fw16-epd-bsp = { path = "../fw16-epd-bsp", features = ["defmt"] }
+1 -1
eepy/src/core1.rs
··· 22 22 23 23 /// Function in RAM to be executed by core1 whilst flashing programs (core1 cannot be executing code 24 24 /// from flash whilst writing/erasing flash) 25 - #[link_section = ".data.ram_func"] 25 + #[unsafe(link_section = ".data.ram_func")] 26 26 fn core1_flash_wait(fifo: &mut SioFifo) { 27 27 cortex_m::interrupt::free(|_cs| { 28 28 fifo.write_blocking(ToCore0Message::FlashAck as u32);
+6 -6
eepy/src/flash.rs
··· 37 37 } 38 38 } 39 39 40 - pub(crate) unsafe fn erase(start_addr: u32, len: u32) { 40 + pub(crate) unsafe fn erase(start_addr: u32, len: u32) { unsafe { 41 41 trace!("flash erasing start {} len {}", start_addr, len); 42 42 flash_op(|| rp2040_flash::flash::flash_range_erase(start_addr, len, true)); 43 43 flush_cache_range(start_addr, len); 44 - } 44 + }} 45 45 46 - pub(crate) unsafe fn program(start_addr: u32, data: &[u8]) { 46 + pub(crate) unsafe fn program(start_addr: u32, data: &[u8]) { unsafe { 47 47 trace!("flash programming start {} len {}", start_addr, data.len()); 48 48 flash_op(|| rp2040_flash::flash::flash_range_program(start_addr, data, true)); 49 49 flush_cache_range(start_addr, data.len() as u32); 50 - } 50 + }} 51 51 52 - pub(crate) unsafe fn erase_and_program(start_addr: u32, data: &[u8]) { 52 + pub(crate) unsafe fn erase_and_program(start_addr: u32, data: &[u8]) { unsafe { 53 53 trace!("flash programming and erasing start {} len {}", start_addr, data.len()); 54 54 flash_op(|| rp2040_flash::flash::flash_range_erase_and_program(start_addr, data, true)); 55 55 flush_cache_range(start_addr, data.len() as u32); 56 - } 56 + }}
+1 -1
eepy/src/launcher.rs
··· 1 - #[link_section = ".launcher"] 1 + #[unsafe(link_section = ".launcher")] 2 2 #[used] 3 3 static LAUNCHER: [u8; 0x20000] = *include_bytes!("../../eepy-launcher/out/eepy-launcher.s00.epb");
+1 -1
eepy/src/syscall.rs
··· 23 23 /// This stack location contains (in order): r0, r1, r2, r3, r12, lr, pc, xPSR. 24 24 /// The pc value from the stack can be used to extract the literal operand from the SVC instruction 25 25 /// which triggered the syscall. 26 - #[no_mangle] 26 + #[unsafe(no_mangle)] 27 27 extern "C" fn handle_syscall(sp: *mut StackFrame, using_psp: bool) { 28 28 // Stack contains R0, R1, R2, R3, R12, LR, ReturnAddress, xPSR 29 29 let stack_values = unsafe { &mut *sp };
+2 -2
eepy/src/tickv.rs
··· 94 94 } 95 95 96 96 #[allow(static_mut_refs)] 97 - pub(crate) unsafe fn with_tickv<R>(f: impl FnOnce(&TicKV<EepyFlashController, 4096>) -> R) -> R { 97 + pub(crate) unsafe fn with_tickv<R>(f: impl FnOnce(&TicKV<EepyFlashController, 4096>) -> R) -> R { unsafe { 98 98 f(TICKV.get_or_init(|| init_tickv())) 99 - } 99 + }}
+2 -2
eepy/src/usb.rs
··· 96 96 97 97 static USB_HANDLER: AtomicPtr<u8> = AtomicPtr::new(core::ptr::null_mut()); 98 98 99 - extern "C" { 99 + unsafe extern "C" { 100 100 fn usb_ret(); 101 101 } 102 102 103 - #[no_mangle] 103 + #[unsafe(no_mangle)] 104 104 extern "C" fn handle_usb_irq(sp: *mut StackFrame, using_psp: bool) { 105 105 trace!("USBCTRL_IRQ"); 106 106