FreeRTOS - неопределенная ссылка vTaskList - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь использовать функцию 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 голосов
/ 22 февраля 2019

Это выглядит из исходного кода, поскольку это зависит от версии ядра FreeRTOS ...

Я проверил несколько демонстрационных приложений для вашей конкретной версии, например, эта , а также источник кода для tasks.c .И этого должно быть достаточно, чтобы установить те два макроса, которые вы упомянули.Таким образом, фактическая причина ошибки компоновки выглядит не связанной с самой конфигурацией.Проверьте, перекомпилирован ли исходный файл tasks.c после изменения конфигурации (если нет, зависимости в проекте не обрабатываются должным образом).Проверьте также, что эти определения являются действительными " 1 " - цифрой (не " l " (маленькая буква "L") или " I " (заглавная)I (буква), которая может быть легко перепутана с «1» в зависимости от используемого шрифта).

ОБНОВЛЕНИЕ

Поскольку вы используете Eclipse IDE, взгляните наэто официальное руководство по настройке проекта . Здесь вы можете найти демонстрационный проект для Eclipse для вашей версии FreeRTOS, отметьте, в частности, Makefile , я думаю, что в вашем автоматически сгенерированном файле Makefile отсутствуют строки, такие как:

$(RTOS_SOURCE_DIR)/tasks.c \

PS

Для v9.0.0 этого должно быть достаточно для включения конфигурации, как вы это сделали.Но v10.0.0 также есть зависимость от configSUPPORT_DYNAMIC_ALLOCATION : если в FreeRTOSConfig.h проекта определено что-то отличное от значения по умолчанию ("1") - vTaskList будетбыть исключенным.Однако эта зависимость не упоминается ни в заголовочном файле task.h, ни в онлайн-документации .

...