当前位置:   article > 正文

FreeRTOS内存管理_configtotal_heap_size

configtotal_heap_size

堆空间是一个数组,configTOTAL_HEAP_SIZE表示堆空间大小,在FreeRTOSConfig.h中宏定义

  1. /* 由应用程序创建堆区,大小为configTOTAL_HEAP_SIZE */
  2. #if (configAPPLICATION_ALLOCATED_HEAP == 1)
  3. extern uint8_t ucHeap[configTOTAL_HEAP_SIZE];
  4. /* 由内核创建堆区,大小为configTOTAL_HEAP_SIZE */
  5. #else
  6. static uint8_t ucHeap[configTOTAL_HEAP_SIZE];
  7. #endif

 

 

将每一个空闲的内存块组织成一个结构体,并将所有空闲块结构体挂接到一个链表上

  1. /* 初始化堆区 */
  2. static void prvHeapInit(void)
  3. {
  4. BlockLink_t *pxFirstFreeBlock;
  5. uint8_t *pucAlignedHeap;
  6. size_t uxAddress;
  7. /* 堆区总大小 */
  8. size_t xTotalHeapSize = configTOTAL_HEAP_SIZE;
  9. /* 堆区首地址 */
  10. uxAddress = (size_t)ucHeap;
  11. /* 如果堆区首地址没有8字节对齐 */
  12. if((uxAddress & portBYTE_ALIGNMENT_MASK) != 0)
  13. {
  14. /* 对堆区首地址进行8字节对齐 */
  15. uxAddress += (portBYTE_ALIGNMENT - 1);
  16. uxAddress &= ~((size_t)portBYTE_ALIGNMENT_MASK);
  17. /* 更新堆区总大小 */
  18. xTotalHeapSize -= uxAdd
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/75932
推荐阅读
相关标签
  

闽ICP备14008679号