* Make most of PSRAM features into run-time configs * Make CI green again * Make CI green again * Update esp-hal/MIGRATING-0.20.md Co-authored-by: Scott Mabin <scott@mabez.dev> * Use Range * CI * Rebase fixes * Update esp-hal/src/lock.rs Co-authored-by: Scott Mabin <scott@mabez.dev> --------- Co-authored-by: Scott Mabin <scott@mabez.dev>
44 lines
1.3 KiB
Rust
44 lines
1.3 KiB
Rust
//! Macros provided for convenience
|
|
|
|
/// Initialize a global heap allocator providing a heap of the given size in
|
|
/// bytes
|
|
#[macro_export]
|
|
macro_rules! heap_allocator {
|
|
($size:expr) => {{
|
|
static mut HEAP: core::mem::MaybeUninit<[u8; $size]> = core::mem::MaybeUninit::uninit();
|
|
|
|
unsafe {
|
|
$crate::HEAP.add_region($crate::HeapRegion::new(
|
|
HEAP.as_mut_ptr() as *mut u8,
|
|
$size,
|
|
$crate::MemoryCapability::Internal.into(),
|
|
));
|
|
}
|
|
}};
|
|
}
|
|
|
|
/// Initialize a global heap allocator backed by PSRAM
|
|
///
|
|
/// You need a SoC which supports PSRAM
|
|
/// and activate the feature to enable it. You need to pass the PSRAM peripheral
|
|
/// and the psram module path.
|
|
///
|
|
/// # Usage
|
|
/// ```rust, no_run
|
|
/// esp_alloc::psram_allocator!(peripherals.PSRAM, hal::psram);
|
|
/// ```
|
|
#[macro_export]
|
|
macro_rules! psram_allocator {
|
|
($peripheral:expr,$psram_module:path) => {{
|
|
use $psram_module as _psram;
|
|
let (start, size) = _psram::init_psram($peripheral, _psram::PsramConfig::default());
|
|
unsafe {
|
|
$crate::HEAP.add_region($crate::HeapRegion::new(
|
|
start,
|
|
size,
|
|
$crate::MemoryCapability::External.into(),
|
|
));
|
|
}
|
|
}};
|
|
}
|