4 releases
0.6.2 | Feb 4, 2024 |
---|---|
0.6.1 | Jun 29, 2023 |
0.6.0 | Jun 9, 2023 |
0.5.0 | Sep 26, 2022 |
#1507 in Embedded development
98KB
1.5K
SLoC
mips-mcu-alloc
A heap allocator for PIC32 microcontrollers (based on the alloc-cortex-m
crate)
The heap is placed at a location determined by the linker and automatically extended to fullfil allocation requests. Automatic heap extension fails if the heap would collide with the stack.
Memory allocation and heap extension can be traced via logging by activating the log
feature.
Example:
#![feature(global_allocator)]
#![feature(alloc_error_handler)]
// Plug in the allocator crate
extern crate alloc;
use alloc::Vec;
use mips_mcu_alloc::MipsMcuHeap;
#[global_allocator]
static ALLOCATOR: MipsMcuHeap = MipsMcuHeap::empty();
#[entry]
fn main() -> ! {
ALLOCATOR.init();
let mut xs = Vec::new();
xs.push(1);
loop { /* .. */ }
}
#[alloc_error_handler]
fn alloc_error(layout: core::alloc::Layout) -> ! {
panic!("Cannot allocate heap memory: {:?}", layout);
}
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~0.4–0.8MB
~19K SLoC