1.1 任务栈大小的确定

一般来说,用户可以事先给任务分配一个大的栈空间,然后通过调试方法打印任务栈的 使用情况,运行一段时间就会有个大概的范围了。这种方法比较简单且实用些。

flash是ROM,stack应该是在RAM上分配的。

1.2 什么是栈溢出

1.3 FreeRTOS 的栈溢出检测机制

FreeRTOS 提供了两种栈溢出检测机制,这两种检测都是在任务切换时才会进行:FreeRTOS 提供了两种栈溢出检测机制,这两种检测都是在任务切换时才会进行:

方法一:

void vApplicationStackOverflowHook( TaskHandle_t xTask, signed char *pcTaskName );

使用方法一需要用户在 FreeRTOSConfig.h 文件中配置如下宏定义:

#define configCHECK_FOR_STACK_OVERFLOW 1

方法二:

任务创建的时候将任务栈所有数据初始化为 0xa5,任务切换时进行任务栈检测的时候会检测末 尾的 16 个字节是否都是 0xa5,通过这种方式来检测任务栈是否溢出了。

使用方法二需要用户在 FreeRTOSConfig.h 文件中配置如下宏定义: #define configCHECK_FOR_STACK_OVERFLOW 2