2019-12-09 20:01发布
cloudboy 发表于 2019-10-30 20:23 图一:HEAP堆; 图二:BSS段
cloudboy 发表于 2019-10-30 20:24 另外,FreeRTOS的HEAP其实也是BSS段,所以两块数据最终都在BSS中
QQ截图20191031092423.jpg (461.09 KB, 下载次数: 0)
下载附件
2019-10-31 09:30 上传
最多设置5个标签!
另外,FreeRTOS的HEAP其实也是BSS段,所以两块数据最终都在BSS中
感谢,请问图4中freertos申请的stack和heap占的是单片机哪部分空间,应该不是图3中规划出的空间吧
比如你在stm32工程的.s文件做了堆栈设置
Stack_Size EQU 0x00000800
Heap_Size EQU 0x00000800
同时在FreeRTOS的配置文件FreeRTOSConfig.h做了以下设置
#define configTOTAL_HEAP_SIZE ((size_t)(20 * 1024)) //系统可用内存,我用的是heap2.c
编译好后,map文件是可以看到3个对应地址空间的,不过如果你没有用malloc这函数,HEAP段是不会创建的,我这为了示意,在main函数开始写了malloc(10);
我的看法就是,你在freertos那些函数里面做的所有内存操作,应该就是来自#define configTOTAL_HEAP_SIZE ((size_t)(20 * 1024))的内存空间。
你在main函数这些普通函数里面的生成的数组,那就还是来自STACK段,如果是malloc空间了,那就来自HEAP段。
QQ截图20191031092423.jpg (461.09 KB, 下载次数: 0)
下载附件
2019-10-31 09:30 上传
一周热门 更多>