FreeRTOS heap_5内存分配方法介绍

heap_5 内存分配方法 heap_5 使用了和 heap_4 相同的合并算法,内存管理实现起来基本相同,但是 heap_5 允许内存堆跨越多个不连续的内存段。比如 stm32 的内部 ram 可以作为内存堆,但是 stm32 内部 ram 比较小,遇到那些需要大容量 ram 的应用就不行了,如音视频处理。不过 stm32 可以外接 sram 甚至大容量的 sdram,如果使用 heap_4 的话你就只能在内部 ram 和外部sram 或 sdram 之间二选一了,使用 heap_5 的话就不存在这个问题,两个都可以一起作为内存堆来用。
如果使用 heap_5 的话,在调用 api 函数之前需要先调用函数 vportdefineheapregions ()来对内存堆做初始化处理,在 vportdefineheapregions()未执行完之前禁止调用任何可能会调用pvportmalloc()的 api 函数!比如创建任务、信号量、队列等函数。函数 vportdefineheapregions()只有一个参数,参数是一个 heapregion_t 类型的数组,heapregion 为一个结构体,此结构体在portable.h 中有定义,定义如下:
typedef struct heapregion
{
    uint8_t *pucstartaddress; //内存块的起始地址
    size_t xsizeinbytes; //内存段大小
} heapregion_t;
使用 heap_5 的时候在一开始就应该先调用函数 vportdefineheapregions()完成内存堆的初始化!然后才能创建任务、信号量这些东西。

基于M-LVDS的数据通信架构介绍
磨工实习教案
在高速网卡中实现可编程传输协议
水痕去除的有效方法有哪些
IBM发布首台模块化量子计算机Quantum System Two
FreeRTOS heap_5内存分配方法介绍
大水牛新款S0113机箱问世 及其报价
Apple在市场上迈出的新服务,它是Apple One
惊喜官送多重惊喜 联想AMD YES家族超越期待
微软win8平板Surface发布 提供RT和Pro双版本
人工智能鉴赏乐器的能力与谱曲能力
555定时器结构图、内部工作原理详解
湖北省计划到2021年前完成5万个5G基站建设任务
用于耳机检测的比较器电路
不同阶段下智能汽车传感器的发展概况
中国电信、中国联通2020年5G消息平台(RCS)建设工程联合集采项目重新启动招标
360安全卫士3代智能手表评测 算是性价比很好的智能手表了
Ubuntu 图形库 igraph 发现拒绝服务重要漏洞 , 需要尽快升级
SESD导致星用DFF电路故障的特征规律、敏感区域与微观机制
RFID标签市场正在飞速增长并且有望加速