#heap-allocator #mips #allocator #pic32 #heap-memory #memory-management #no-std

nightly no-std mips-mcu-alloc

MIPS 基础微控制器的堆内存分配器

4 个版本

0.6.2 2024年2月4日
0.6.1 2023年6月29日
0.6.0 2023年6月9日
0.5.0 2022年9月26日

#1575 in 嵌入式开发

MIT/Apache

98KB
1.5K SLoC

GNU Style Assembly 1K SLoC // 0.1% comments Alex 434 SLoC Rust 261 SLoC // 0.0% comments Python 2 SLoC // 1.0% comments

mips-mcu-alloc

Crates.io docs.rs

PIC32 微控制器的堆内存分配器(基于 alloc-cortex-m crate)

堆内存放置在由连接器确定的地址,并自动扩展以满足分配请求。如果堆内存与堆栈冲突,则自动扩展堆内存失败。

可以通过激活 log 功能来通过日志跟踪内存分配和堆内存扩展。

示例

#![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);
}

许可证

许可协议为以下之一

任选其一。

依赖关系

~0.4–0.9MB
~19K SLoC