реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Использование Trace Hook Macros, Использование Trace Hook Macros для логгирования событий
Lyrri
сообщение Oct 16 2015, 10:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-01-11
Из: Киев
Пользователь №: 62 244



Здравствуйте.

Для логгирования событий 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_ */


Но возникла проблема. FreeRTOSConfig.h также включается в portasm.s и компилятор выдает ошибку при попытке скомпилировать проект.
Кто нибудь использовал эти макросы? Где их лучше/правильнее всего разместить?
Go to the top of the page
 
+Quote Post
den_po
сообщение Oct 16 2015, 11:25
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



В совете же говорится только о макросах, вот и оставляйте в файле только макросы
Go to the top of the page
 
+Quote Post
Lyrri
сообщение Oct 16 2015, 12:45
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-01-11
Из: Киев
Пользователь №: 62 244



Действительно ))) Спасибо. Я чего-то решил, что компилятор будет ругаться на то, что функция не была объявлена заранее.
Go to the top of the page
 
+Quote Post
alexp74
сообщение Oct 16 2015, 20:40
Сообщение #4





Группа: Участник
Сообщений: 11
Регистрация: 20-05-15
Пользователь №: 86 787



Цитата(Lyrri @ Oct 16 2015, 15:45) *
Действительно ))) Спасибо. Я чего-то решил, что компилятор будет ругаться на то, что функция не была объявлена заранее.

Also depending on the port and development environment it may be necessary to use the pre-processor to prevent the configuration file from being included from assembly files. For example, in IAR this can be done as follows...

Код
/* The IAR C compiler automatically defines __ICCARM__. */
#ifdef __ICCARM__
    #include "trcKernelPortFreeRTOS.h"
#endif

Preventing the RTOS trace header file from being included from assembly files when using the IAR compiler


http://www.freertos.org/FreeRTOS-Plus/Free...tructions.shtml
Go to the top of the page
 
+Quote Post
Lyrri
сообщение Oct 20 2015, 14:30
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-01-11
Из: Киев
Пользователь №: 62 244



Цитата
alexp74
Also depending on the port and development environment it may be necessary to use the pre-processor to prevent the configuration file from being included from assembly files. For example, in IAR this can be done as follows...


alexp74, спасибо. Помогло.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 08:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016