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
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
走着的小站
本文地址: freertos学习笔记三之任务栈大小确定及其溢出检测
本文地址: freertos学习笔记三之任务栈大小确定及其溢出检测