本教程不是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

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

被折叠的 条评论
为什么被折叠?



