FreeRTOS-vTaskList未定义参考

时间:2019-02-21 07:49:03

标签: task freertos rtos

我正在尝试使用vTaskList函数来监视正在使用的任务。 为了使用vTaskList,我在下面配置了宏。

#define configUSE_TRACE_FACILITY        1
#define configUSE_STATS_FORMATTING_FUNCTIONS 1

和下面是显示任务列表的任务代码。

  void TASK_LIST()
    {
        signed char pWriteBuffer[2048];
        for(;;)
        {
            vTaskList(pWriteBuffer);
            printf("task_name   task_state  priority   stack  tasK_num\n");
            printf("%s\n", pWriteBuffer);
        }
        vTaskDelete(NULL);
        return;
    }

但是,该错误刚刚出现以供未定义的参考

什么原因导致此错误?

谢谢。

  

Ps。对于我的原始情况,没有宏   FreeRTOSConfig.h中的configUSE_STATS_FORMATTING_FUNCTIONS。所以我加了   手动。

现在我正在搜索构建命令以构建整个项目 enter image description here

1 个答案:

答案 0 :(得分:0)

它从代码源中查找,因为它取决于FreeRTOS内核版本...

我检查了几个演示应用程序以查找您的特定版本,例如this one,也是 tasks.c 的代码源。设置您提到的那两个宏应该就足够了。因此,链接错误的实际原因似乎与配置本身无关。检查配置更改后是否重新构建了 tasks.c 源文件(如果没有,则无法正确处理项目中的依赖项)。还要仔细检查这些定义是否为真实的“ 1 ”-数字(不是“ l ”(小写的“ L”字母)或“ I ” (大写的“ I”字母),根据所使用的字体,很容易将其与“ 1”混淆。

更新

由于您正在使用Eclipse IDE,因此请看一下此official guidance of how to setup projectHere您可以找到适用于您的FreeRTOS版本的Eclipse演示项目,尤其要检查Makefile,我猜您自动生成的Makefile缺少以下行:

$(RTOS_SOURCE_DIR)/tasks.c \

PS

对于v9.0.0,足以像您一样启用配置。但是v10.0.0也依赖于 configSUPPORT_DYNAMIC_ALLOCATION :如果在项目的 FreeRTOSConfig.h 中将其定义为默认值(“ 1”)以外的值-vTaskList将被排除。但是,在包含头文件task.h和online documentation中都没有提及这种依赖性。