FreeRTOS基础二:堆内存管理之heap_4方案

本文介绍了FreeRTOS中heap_4内存管理方案,它使用全局数组ucHeap作为堆内存池,通过最先适合算法分配内存,解决碎片问题。heap_4允许在运行时动态创建和删除内核对象,具有较高效率。用户可以自定义ucHeap内存池的位置,提高性能。此外,文章还提到了获取堆空闲大小和最低空闲大小的工具函数以及分配失败时的钩子函数。
摘要由CSDN通过智能技术生成

背景知识

从FreeRTOS V9.0.0内核版本开始,内核对象占用的内存可以在编译期间静态分配,也可以在运行期间动态分配。内核对象如:tasks(任务),queues(队列),semaphores(信号量)和event groups(事件组)。为了让FreeRTOS更易于使用,新版内核对象都不是在编译期间静态分配的,而是在运行时动态分配。在通常的情况下,FreeRTOS使用一个全局字节数组作为堆内存池,每次一个内核对象创建时,FreeRTOS就会在这个堆上分配内存,当对内核象销毁时,内核又会释放对象所占的内存。这种原则使得FreeRTOS的设计更加简明,内核API更易于使用。所以这里就涉及到了FreeRTOS中动态内存分配的问题,它到底是如何实现的呢?

动态内存分配是C语言编程中的一个概念,而不是FreeRTOS或者多任务里面的特有的概念。FreeRTOS需要涉及到动态内存分配是因为内核对象是动态构造的。在通用的C语言编程环境里,我们可以使用标准库中的malloc()和free()来进行动态内存分配的操作,但这些函数对于实时应用(real-time application)是不合适的,原因有如下几点:

  • 在嵌入式系统中他们不总是可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值