当前位置:   article > 正文

再论FreeRTOS中的configTOTAL_HEAP_SIZE_configtotal_heap_size是什么

configtotal_heap_size是什么

        关于任务栈和系统栈的基础知识,可以参考之前的随笔。(FreeRTOS 任务栈大小确定及其溢出检测

         

        这里再次说明:

#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) )

        这个宏,官方文档解释:

configTOTAL_HEAP_SIZE就是FreeRTOS堆中可用的RAM总量

        只有在configSUPPORT_DYNAMIC_ALLOCATION设置为1并且应用程序使用FreeRTOS源代码下载中提供的一个示例内存分配方案时(heap1,2,3,4,5.c源文件,这里我使用的是heap4),才会使用此值。有关详细信息,请参阅内存分配部分。

        我全局搜索工程,并没有发现configSUPPORT_DYNAMIC_ALLOCATION这个宏,然后,直接看官方解释:

现在我们知道了,这个宏不定义,默认是1,即启用状态

        具体的configTOTAL_HEAP_SIZE 需要分配多大,确实没有一个简单可行的方式,但是,当我们遇到程序莫名崩溃或者卡死的时候,先试试把configTOTAL_HEAP_SIZE 的大小增大试试看。就在上一个项目中,我增加了一个任务中的几百行代码,然后发现我的系统会出现崩溃情况,我试着把

        任务栈从512提高到1024,依然还是出现崩溃,再然后,我明白不是任务栈的大小问题,但应该就是某个内存分配出了问题(当然,这是建立在我已经检查过代码没有非法操作的情况下),最后,我试着把configTOTAL_HEAP_SIZE 改成20* 1024,果然,立马系统正常运行了。

        这说明确实是RAM不够用了,特此记录。

致谢https://www.cnblogs.com/yangguang-it/p/8419525.html 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/75946
推荐阅读
相关标签
  

闽ICP备14008679号