使用cubemx 创建带freertos的工程,可以配置 HEAP 的地方有2个,为了加以区分,姑且称为 程序堆栈与操作系统堆栈,如图:请问它们的作用分别是什么,它们之间有什么关系?最近因为项目要上freertos并设计芯片选型,不得不考虑现有工程加上freertos以及任务等后所需的ram和flash大小,所以才会有堆栈空间关系的思考。
xxx.S里面是是系统堆栈
1、程序上电,还没有开启FreeRTOS之前都使用。
2、开启后,进入中断后的所有操作都使用这个栈控件,中断服务程序里的句柄变量,中断嵌套等使用。
FreeRTOSConfig.h定义的heap大小
这个是FreeRTOS的一个全局动态内存,任务栈,各种通信组件等全部使用这个。