Для логгирования событий FreeRTOS попробовал подключить Trace Hook Macros (Чип STM32F2xx, компилятор IAR, FreeRTOS v8.2.2)
Возникла проблема с местом определения этих макросов. Наткнулся на рекомендацию от Ричарда, где он пишет: "The best place to define hook macros, such as traceTASK_SWITCHED_OUT(), is in FreeRTOSConfig.h. That way the order in which macros are defined is guaranteed to be correct. If you are going to write complex macros then you can put them in their own header file, and include that header file from FreeRTOSConfig.h"
Попробовал подключить свой хедер в FreeRTOSConfig.h. Хедер выглядит следующим образом
Код
#ifndef LOGGER_H_
#define LOGGER_H_
#include <stdint.h>
void logger_init();
void logger_createtask(uint32_t addrname, uint32_t prio, uint32_t stacksize);
#define traceSTART logger_init();
#define traceTASK_CREATE(xTask) \
logger_createtask((uint32_t)&xTask->pcTaskName, xTask->uxPriority, \
(xTask->pxTopOfStack-xTask->pxStack));
#endif /* LOGGER_H_ */
#define LOGGER_H_
#include <stdint.h>
void logger_init();
void logger_createtask(uint32_t addrname, uint32_t prio, uint32_t stacksize);
#define traceSTART logger_init();
#define traceTASK_CREATE(xTask) \
logger_createtask((uint32_t)&xTask->pcTaskName, xTask->uxPriority, \
(xTask->pxTopOfStack-xTask->pxStack));
#endif /* LOGGER_H_ */
Но возникла проблема. FreeRTOSConfig.h также включается в portasm.s и компилятор выдает ошибку при попытке скомпилировать проект.
Кто нибудь использовал эти макросы? Где их лучше/правильнее всего разместить?