赞
踩
堆空间是一个数组,configTOTAL_HEAP_SIZE表示堆空间大小,在FreeRTOSConfig.h中宏定义
- /* 由应用程序创建堆区,大小为configTOTAL_HEAP_SIZE */
- #if (configAPPLICATION_ALLOCATED_HEAP == 1)
- extern uint8_t ucHeap[configTOTAL_HEAP_SIZE];
- /* 由内核创建堆区,大小为configTOTAL_HEAP_SIZE */
- #else
- static uint8_t ucHeap[configTOTAL_HEAP_SIZE];
- #endif
将每一个空闲的内存块组织成一个结构体,并将所有空闲块结构体挂接到一个链表上
- /* 初始化堆区 */
- static void prvHeapInit(void)
- {
- BlockLink_t *pxFirstFreeBlock;
- uint8_t *pucAlignedHeap;
- size_t uxAddress;
- /* 堆区总大小 */
- size_t xTotalHeapSize = configTOTAL_HEAP_SIZE;
-
- /* 堆区首地址 */
- uxAddress = (size_t)ucHeap;
-
- /* 如果堆区首地址没有8字节对齐 */
- if((uxAddress & portBYTE_ALIGNMENT_MASK) != 0)
- {
- /* 对堆区首地址进行8字节对齐 */
- uxAddress += (portBYTE_ALIGNMENT - 1);
- uxAddress &= ~((size_t)portBYTE_ALIGNMENT_MASK);
- /* 更新堆区总大小 */
- xTotalHeapSize -= uxAdd
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。