Add usage in to docs
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
			
		||||
//! MultiCore support
 | 
			
		||||
//! Multicore support
 | 
			
		||||
//!
 | 
			
		||||
//! This module handles setup of the 2nd cpu core on the rp2040, which we refer to as core1.
 | 
			
		||||
//! It provides functionality for setting up the stack, and starting core1.
 | 
			
		||||
@@ -7,6 +7,28 @@
 | 
			
		||||
//!
 | 
			
		||||
//! Enable the `critical-section-impl` feature in embassy-rp when sharing data across cores using
 | 
			
		||||
//! the `embassy-sync` primitives and `CriticalSectionRawMutex`.
 | 
			
		||||
//!
 | 
			
		||||
//! # Usage
 | 
			
		||||
//! ```no_run
 | 
			
		||||
//! static mut CORE1_STACK: Stack<4096> = Stack::new();
 | 
			
		||||
//! static EXECUTOR0: StaticCell<Executor> = StaticCell::new();
 | 
			
		||||
//! static EXECUTOR1: StaticCell<Executor> = StaticCell::new();
 | 
			
		||||
//!
 | 
			
		||||
//! #[cortex_m_rt::entry]
 | 
			
		||||
//! fn main() -> ! {
 | 
			
		||||
//!     let p = embassy_rp::init(Default::default());
 | 
			
		||||
//!
 | 
			
		||||
//!     let mut mc = MultiCore::new();
 | 
			
		||||
//!     let _ = mc.cores.1.spawn(unsafe { &mut CORE1_STACK.mem }, move || {
 | 
			
		||||
//!         let executor1 = EXECUTOR1.init(Executor::new());
 | 
			
		||||
//!         executor1.run(|spawner| unwrap!(spawner.spawn(core1_task())));
 | 
			
		||||
//!     });
 | 
			
		||||
//!
 | 
			
		||||
//!     let executor0 = EXECUTOR0.init(Executor::new());
 | 
			
		||||
//!     executor0.run(|spawner| unwrap!(spawner.spawn(core0_task())));
 | 
			
		||||
//! }
 | 
			
		||||
//! ```
 | 
			
		||||
//!
 | 
			
		||||
 | 
			
		||||
use core::mem::ManuallyDrop;
 | 
			
		||||
use core::sync::atomic::{compiler_fence, Ordering};
 | 
			
		||||
@@ -28,14 +50,6 @@ pub enum Error {
 | 
			
		||||
    Unresponsive,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Core ID
 | 
			
		||||
#[derive(Debug)]
 | 
			
		||||
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
 | 
			
		||||
pub enum CoreId {
 | 
			
		||||
    Core0,
 | 
			
		||||
    Core1,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[inline(always)]
 | 
			
		||||
fn install_stack_guard(stack_bottom: *mut usize) {
 | 
			
		||||
    let core = unsafe { cortex_m::Peripherals::steal() };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user