FreeRTOS 堆栈溢出钩子
FreeRTOS stack overflow hook
根据 FreeRTOS
有关堆栈溢出的文档:
The application must provide a stack overflow hook function if configCHECK_FOR_STACK_OVERFLOW is not set to 0. The hook function must
be called vApplicationWhosebugHook(), and have the prototype
below:
void vApplicationWhosebugHook( TaskHandle_t xTask,signed char
*pcTaskName );
并且在 FreeRTOS
中,以下原型在 tasks.h
文件中定义:
/* Callback function prototypes. --------------------------*/
extern void vApplicationWhosebugHook( xTaskHandle pxTask, signed char *pcTaskName );
所以,我设置configCHECK_FOR_STACK_OVERFLOW
为2,实现了功能
在我的应用程序代码中:
void vApplicationWhosebugHook( xTaskHandle pxTask, signed char *pcTaskName )
{
while (1)
{
/* my code. Prints stuff directly to the console*/
}
}
我的问题是这个实现是否正确?即,挂钩实现在我的应用程序代码中,tasks.h
中的声明保持不变。
我觉得很合适。您会在 FreeRTOS 下载的 FreeRTOS/Demo 目录中找到很多很多示例。使用 2 而不是 1 的理由如下:http://www.freertos.org/Stacks-and-stack-overflow-checking.html
根据 FreeRTOS
有关堆栈溢出的文档:
The application must provide a stack overflow hook function if configCHECK_FOR_STACK_OVERFLOW is not set to 0. The hook function must be called vApplicationWhosebugHook(), and have the prototype below:
void vApplicationWhosebugHook( TaskHandle_t xTask,signed char *pcTaskName );
并且在 FreeRTOS
中,以下原型在 tasks.h
文件中定义:
/* Callback function prototypes. --------------------------*/
extern void vApplicationWhosebugHook( xTaskHandle pxTask, signed char *pcTaskName );
所以,我设置configCHECK_FOR_STACK_OVERFLOW
为2,实现了功能
在我的应用程序代码中:
void vApplicationWhosebugHook( xTaskHandle pxTask, signed char *pcTaskName )
{
while (1)
{
/* my code. Prints stuff directly to the console*/
}
}
我的问题是这个实现是否正确?即,挂钩实现在我的应用程序代码中,tasks.h
中的声明保持不变。
我觉得很合适。您会在 FreeRTOS 下载的 FreeRTOS/Demo 目录中找到很多很多示例。使用 2 而不是 1 的理由如下:http://www.freertos.org/Stacks-and-stack-overflow-checking.html