Fenolftalein 0 14 ноября, 2012 Опубликовано 14 ноября, 2012 · Жалоба Доброго времени суток. При попытке скомпилировать проект, с использованием трассировочных макросов (установка 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 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба Разобрался. Макрос configUSE_TRACE_FACILYTI нужно устанавливать только при трассировке с записью в буфер, при этом надо выделить память под буфер и задать на него указатель. Другая проблема, в некоторые отладочные макросы, к примеру traceTASK_CREATE(pxTask), передается указатель на структуру блока управления задачей tskTaskControlBlock. Как из этого указателя вытащить данные о задаче (к примеру, имя задачи, приоритет)? Для этого указатель надо привести к типу tskTaskControlBlock, но поскольку определение структуры находиться в с-файле, компилятор не видит его в файле, где я переопределяю трассировочные макросы. Возможные варианты решения: 1. Определить смещение нужных полей от начала структуры 2. Определить свою структуру, с полями идентичными полям структуры tskTaskControlBlock и приводить указатель к указателю на нее. Оба решения негибки и не очевидны. Наверное, авторы предусмотрели более простое решение. Хотелось бы знать, какое? P.S. Непонятно, зачем потребовалось размещать определение структуры tskTaskControlBlock в с-файле. Или это такая защита от случайного доступа к полям структуры? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться