userland app drew to kernel framebuffer!!!
This commit is contained in:
@@ -40,6 +40,7 @@ use embassy_rp::{
|
||||
spi::{self, Spi},
|
||||
usb as embassy_rp_usb,
|
||||
};
|
||||
use embassy_sync::{blocking_mutex::raw::CriticalSectionRawMutex, signal::Signal};
|
||||
use embassy_time::{Delay, Timer};
|
||||
use embedded_hal_bus::spi::ExclusiveDevice;
|
||||
use embedded_sdmmc::SdCard as SdmmcSdCard;
|
||||
@@ -62,6 +63,8 @@ static ALLOCATOR: Talck<spin::Mutex<()>, ClaimOnOom> =
|
||||
Talc::new(unsafe { ClaimOnOom::new(Span::from_array(core::ptr::addr_of!(ARENA).cast_mut())) })
|
||||
.lock();
|
||||
|
||||
static DRIVERS_READY: Signal<CriticalSectionRawMutex, ()> = Signal::new();
|
||||
|
||||
#[embassy_executor::main]
|
||||
async fn main(_spawner: Spawner) {
|
||||
let p = embassy_rp::init(Default::default());
|
||||
@@ -106,6 +109,8 @@ async fn main(_spawner: Spawner) {
|
||||
// runs dynamically loaded elf files
|
||||
#[embassy_executor::task]
|
||||
async fn userland_task() {
|
||||
DRIVERS_READY.wait().await;
|
||||
|
||||
defmt::info!("Loading binary");
|
||||
let binary_data: &[u8] =
|
||||
include_bytes!("../../target/thumbv8m.main-none-eabihf/release/calculator");
|
||||
@@ -153,7 +158,6 @@ async fn kernel_task(display: Display, sd: Sd, mcu: Mcu, usb: USB) {
|
||||
|
||||
Timer::after_millis(250).await;
|
||||
|
||||
let display_fut = {
|
||||
let mut config = spi::Config::default();
|
||||
config.frequency = 16_000_000;
|
||||
let spi = Spi::new(
|
||||
@@ -166,8 +170,10 @@ async fn kernel_task(display: Display, sd: Sd, mcu: Mcu, usb: USB) {
|
||||
config,
|
||||
);
|
||||
let display = init_display(spi, display.cs, display.data, display.reset).await;
|
||||
display_handler(display)
|
||||
};
|
||||
|
||||
DRIVERS_READY.signal(());
|
||||
|
||||
let display_fut = display_handler(display);
|
||||
|
||||
{
|
||||
let mut config = spi::Config::default();
|
||||
|
||||
Reference in New Issue
Block a user