Rust嵌入式编程---动态内存分配器(Vec,String等)

本文介绍如何在Rust嵌入式编程中实现内存管理,包括动态分配内存和无堆分配内存两种模式。通过使用特定的库和方法,使开发者能够有效地管理内存资源。

本教程不是0基础的Rust嵌入式编程,需要有一定的Rust裸机编程的基础知识。
作为一个比较接近C的例子,适合入门,代码比较容易理解。本次例子使用的是target = “thumbv8m.main-none-eabihf” # Cortex-M33 (with FPU)平台进行编译,生成的二进制文件在Qemu模拟器中运行。
嵌入式系统编程是不能使用Rust的Std库的,只能使用它的子库:core。以及一些cortex库还有导入的一些外部库,看代码例子即可。
首先就是安装qemu模拟器和一些Rust编译的工具,这部分可以参考网上教程,有点麻烦。
下面直接附上内存分配器的代码,这个部分挺重要的,定义之后就可以使用vec、string、hashmap等数据结构,这对于裸机Rust编程是非常重要的,代码里面有详细的注释。下面对动态分配内存和无堆分配内存两种模式进行介绍:

动态分配内存
#![feature(alloc_error_handler)]
#![no_main]
#![no_std]
#![feature(alloc)]

extern crate alloc;
use panic_halt as _;

use alloc::vec;
use core::alloc::Layout;
use alloc::string::String;

use alloc_cortex_m::CortexMHeap;
use cortex_m::asm;
use cortex_m_rt::entry;
use cortex_m_semihosting::{
   
   hprintln,debug};
//全局分配器定义
//为了能够在单片机上开辟一块作为堆的内存,首先要调用cortex_m_rt::heapstart()函数方法
//分配指定大小HEAP_SIZE的内存,本程序HEAP_SIZE大小定义为1024字节。
#[global_allocator]
static ALLOCATOR
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值