FreeRTOS - vTaskList未定义的引用

问题描述 投票:1回答:1

我试图使用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

task freertos rtos
1个回答
0
投票

它从代码源看起来,因为它依赖于FreeRTOS内核版本......

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

UPDATE

由于您使用的是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。但是,在include头文件task.h和online documentation中都没有提到这种依赖关系。

© www.soinside.com 2019 - 2024. All rights reserved.