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 中有定义,定义如下:
	typedefstructHeapRegion
	{
	uint8_t*pucStartAddress;//内存块的起始地址
	size_txSizeInBytes;//内存段大小
	}HeapRegion_t;
使用 heap_5 的时候在一开始就应该先调用函数 vPortDefineHeapRegions()完成内存堆的初始化!然后才能创建任务、信号量这些东西。
- 
                                嵌入式
                                +关注关注 5082文章 19117浏览量 304982
- 
                                内存
                                +关注关注 8文章 3023浏览量 74029
- 
                                函数
                                +关注关注 3文章 4329浏览量 62588
- 
                                FreeRTOS
                                +关注关注 12文章 484浏览量 62157
发布评论请先 登录
相关推荐
基于FreeRTOS内存管理Heap_4.c的实现方法
为什么既然已经用上了FreeRTOS,还要再用自己的内存分配方案呢
FreeRTOS代码剖析之1:内存管理Heap
 
    
FreeRTOS代码剖析之2:内存管理Heap
 
    
FreeRTOS代码剖析之3:内存管理Heap
韦东山freeRTOS系列教程之内存管理(2)
 
    
STM32内存结构介绍,FreeRTOS内存分配技巧,Stack_Size和Heap_Size大小设置
 
    
 
           
        
 
         FreeRTOS heap_5内存分配方法介绍
FreeRTOS heap_5内存分配方法介绍 
  
     
     
            
             
             
                 
             工商网监
工商网监
        
评论