From f85f1a07f34194445ad4c2f5dcb1cdcbae0ea387 Mon Sep 17 00:00:00 2001 From: bunnie Date: Sat, 4 May 2024 01:46:38 +0800 Subject: [PATCH] reserve ifram locs for swap and/or app uart --- services/cram-hal-service/Cargo.toml | 1 + services/cram-hal-service/src/main.rs | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/services/cram-hal-service/Cargo.toml b/services/cram-hal-service/Cargo.toml index f6d723626..d6d96ae5b 100644 --- a/services/cram-hal-service/Cargo.toml +++ b/services/cram-hal-service/Cargo.toml @@ -32,6 +32,7 @@ rkyv = { version = "0.4.3", default-features = false, features = [ [features] app-uart = [] +swap = [] # add this feature to enable pre-emption quantum-timer = ["utralib"] default = ["quantum-timer", "app-uart"] diff --git a/services/cram-hal-service/src/main.rs b/services/cram-hal-service/src/main.rs index c427333a0..babb7178c 100644 --- a/services/cram-hal-service/src/main.rs +++ b/services/cram-hal-service/src/main.rs @@ -9,7 +9,9 @@ use cramium_hal::{ use utralib::utra; #[cfg(feature = "quantum-timer")] use utralib::*; -use xous::{sender::Sender, SWAPPER_PID}; +use xous::sender::Sender; +#[cfg(feature = "swap")] +use xous::SWAPPER_PID; use xous_pio::*; struct PreemptionHw { @@ -104,9 +106,14 @@ fn main() { ifram_allocs[0][31] = Some(Sender::from_usize(usize::MAX)); // Second page from top of IFRAM0 is occupied by the swap handler. This was allocated // by the loader, before the kernel even started. - ifram_allocs[0][30] = Some(Sender::from_usize(SWAPPER_PID as usize)); - #[cfg(feature="app-uart")] - ifram_allocs[0][29] = Some(Sender::from_usize(SWAPPER_PID as usize)); // currently allocated to swapper for debug + #[cfg(feature = "swap")] + { + ifram_allocs[0][30] = Some(Sender::from_usize(SWAPPER_PID as usize)); + } + #[cfg(feature = "app-uart")] + { + ifram_allocs[0][29] = Some(Sender::from_usize(usize::MAX)); + } let iox_page = xous::syscall::map_memory( xous::MemoryAddress::new(utralib::generated::HW_IOX_BASE),