文件名称:内存分配方案范例-ri5cy_user_manual
文件大小:3.05MB
文件格式:PDF
更新时间:2024-06-23 11:42:25
FreeRTOS 中文
5.2 内存分配方案范例 Heap_1.c Heap_1.c 实现了一个非常基本的 pvPortMalloc()版本,而且没有实现 vPortFree()。 如果应用程序不需要删除任务,队列或者信号量,则具有使用 heap_1 的潜质。Heap_1 总是具有确定性。 这种分配方案是将 FreeRTOS 的内存堆空间看作一个简单的数组。当调用 pvPortMalloc()时,则将数组又简单地细分为更小的内存块。 数组的总大小(字节为单位)在FreeRTOSConfig.h中由 configTOTAL_HEAP_SIZE 定义。以这种方式定义一个巨型数组会让整个应用程序看起来耗费了许多内存——即使 是在数组没有进行任何实际分配之前。 需要为每个创建的任务在堆空间上分配一个任务控制块(TCB)和一个栈空间。图 42 展示了 heap_1 是如何在任务创建时细分这个简单数组的。从图 42 中可以看到: A 表示数组在没有任何任务创建时的情形,这里整个数据是空的。 B 表示数组在创建了一个任务后的情形。 C 表示数组在创建了三个任务后的情形。 图 42 每次创建任务后的内存分配情况 FreeRTOS 123 Designed For Microcontrollers; © 2009 Richard Barry. Distribution or publication in any form is strictly prohibited.