FreeRTOS堆栈溢出钩子

时间:2016-07-12 09:28:57

标签: operating-system embedded hook freertos

根据有关堆栈溢出的FreeRTOS文档:

  

如果configCHECK_FOR_STACK_OVERFLOW未设置为0,则应用程序必须提供堆栈溢出挂钩函数。钩子函数必须   被称为vApplicationStackOverflowHook(),并拥有原型   下面:

     

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

FreeRTOS中,tasks.h文件中定义了以下原型:

 /* Callback function prototypes. --------------------------*/
 extern void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName );

因此,我将configCHECK_FOR_STACK_OVERFLOW设置为2并实现该功能 在我的应用程序代码中:

void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )
{
    while (1)
    {
        /* my code. Prints stuff directly to the console*/
    }
}

我的问题是这个实现是否正确?例如,钩子实现在我的应用程序代码中,tasks.h中的声明保持不变。

1 个答案:

答案 0 :(得分:1)

看起来对我来说。您可以在FreeRTOS下载的FreeRTOS / Demo目录中找到许多很多很多例子。使用2而不是1的基本原理是:http://www.freertos.org/Stacks-and-stack-overflow-checking.html