Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Трассировочные макросы для C18 (pic18f8722)
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
Fenolftalein
Доброго времени суток.

При попытке скомпилировать проект, с использованием трассировочных макросов (установка configUSE_TRACE_FACILYTI в 1 в "FreeRTOSConfig.h")

компилятор выдает ошибку "type mismatch in assigment" на строчку

/* Write the details of all TCB's in pxList into buffer. */
listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList);

в файле "tasks.c"

При установке configUSE_TRACE_FACILYTI в 0 все компилируется нормально.

Версия FreeRTOS 7.2.0
Компилятор C18
Fenolftalein
Разобрался. Макрос configUSE_TRACE_FACILYTI нужно устанавливать только при трассировке с записью в буфер, при этом надо выделить память под буфер и задать на него указатель.

Другая проблема, в некоторые отладочные макросы, к примеру traceTASK_CREATE(pxTask), передается указатель на структуру блока управления задачей tskTaskControlBlock. Как из этого указателя вытащить данные о задаче (к примеру, имя задачи, приоритет)? Для этого указатель надо привести к типу tskTaskControlBlock, но поскольку определение структуры находиться в с-файле, компилятор не видит его в файле, где я переопределяю трассировочные макросы.
Возможные варианты решения:
1. Определить смещение нужных полей от начала структуры
2. Определить свою структуру, с полями идентичными полям структуры tskTaskControlBlock и приводить указатель к указателю на нее.

Оба решения негибки и не очевидны. Наверное, авторы предусмотрели более простое решение. Хотелось бы знать, какое?

P.S.
Непонятно, зачем потребовалось размещать определение структуры tskTaskControlBlock в с-файле. Или это такая защита от случайного доступа к полям структуры?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.