/******************************************************************************* | |
* Trace Recorder Library for Tracealyzer v3.0.2 | |
* Percepio AB, www.percepio.com | |
* | |
* trcConfig.h | |
* | |
* Configuration parameters for the streaming version trace recorder library. | |
* Before using the trace recorder library, please check that the default | |
* settings are appropriate for your system, and if necessary adjust these. | |
* | |
* Terms of Use | |
* This software (the "Tracealyzer Recorder Library") is the intellectual | |
* property of Percepio AB and may not be sold or in other ways commercially | |
* redistributed without explicit written permission by Percepio AB. | |
* | |
* Separate conditions applies for the SEGGER branded source code included. | |
* | |
* The recorder library is free for use together with Percepio products. | |
* You may distribute the recorder library in its original form, but public | |
* distribution of modified versions require approval by Percepio AB. | |
* | |
* Disclaimer | |
* The trace tool and recorder library is being delivered to you AS IS and | |
* Percepio AB makes no warranty as to its use or performance. Percepio AB does | |
* not and cannot warrant the performance or results you may obtain by using the | |
* software or documentation. Percepio AB make no warranties, express or | |
* implied, as to noninfringement of third party rights, merchantability, or | |
* fitness for any particular purpose. In no event will Percepio AB, its | |
* technology partners, or distributors be liable to you for any consequential, | |
* incidental or special damages, including any lost profits or lost savings, | |
* even if a representative of Percepio AB has been advised of the possibility | |
* of such damages, or for any claim by any third party. Some jurisdictions do | |
* not allow the exclusion or limitation of incidental, consequential or special | |
* damages, or the exclusion of implied warranties or limitations on how long an | |
* implied warranty may last, so the above limitations may not apply to you. | |
* | |
* Tabs are used for indent in this file (1 tab = 4 spaces) | |
* | |
* Copyright Percepio AB, 2015. | |
* www.percepio.com | |
******************************************************************************/ | |
#ifndef TRC_CONFIG_H | |
#define TRC_CONFIG_H | |
#ifdef __cplusplus | |
extern C { | |
#endif | |
/******************************************************************************* | |
* Configuration Macro: TRC_RECORDER_HARDWARE_PORT | |
* | |
* Specify what hardware is used. | |
* | |
* See trcHardwarePort.h for available ports, or to define your own. | |
******************************************************************************/ | |
#define TRC_RECORDER_HARDWARE_PORT TRC_PORT_ARM_Cortex_M | |
/****************************************************************************** | |
* BSP and other project specific includes | |
* | |
* Include the necessary header files. | |
*****************************************************************************/ | |
#include "board.h" | |
/****************************************************************************** | |
* TRC_FREERTOS_VERSION | |
* | |
* Specify what version of FreeRTOS that is used. This is necessary compensate | |
* for renamed symbols in the FreeRTOS kernel (does not build if incorrect). | |
* | |
* TRC_FREERTOS_VERSION_7_3_OR_7_4 (= 1) If using FreeRTOS v7.3.0 - v7.4.2 | |
* TRC_FREERTOS_VERSION_7_5_OR_7_6 (= 2) If using FreeRTOS v7.5.0 - v7.6.0 | |
* TRC_FREERTOS_VERSION_8_0_OR_LATER (= 3) If using FreeRTOS v8.0.0 or later | |
*****************************************************************************/ | |
#define TRC_FREERTOS_VERSION_NOT_SET 0 | |
#define TRC_FREERTOS_VERSION_7_3_OR_7_4 1 | |
#define TRC_FREERTOS_VERSION_7_5_OR_7_6 2 | |
#define TRC_FREERTOS_VERSION_8_0_OR_LATER 3 | |
#define TRC_FREERTOS_VERSION TRC_FREERTOS_VERSION_8_0_OR_LATER | |
/******************************************************************************* | |
* Configuration Macro: TRC_SYMBOL_TABLE_SLOTS | |
* | |
* The maximum number of symbols names that can be stored. This includes: | |
* - Task names | |
* - Named ISRs (vTraceSetISRProperties) | |
* - Named kernel objects (vTraceStoreKernelObjectName) | |
* - User event channels (vTraceStoreUserEventChannelName) | |
* | |
* If this value is too small, not all symbol names will be stored and the | |
* trace display will be affected. In that case, there will be warnings | |
* (as User Events) from TzCtrl task, that monitors this. | |
******************************************************************************/ | |
#define TRC_SYMBOL_TABLE_SLOTS 30 | |
/******************************************************************************* | |
* Configuration Macro: TRC_SYMBOL_MAX_LENGTH | |
* | |
* The maximum length of symbol names, including: | |
* - Task names | |
* - Named ISRs (vTraceSetISRProperties) | |
* - Named kernel objects (vTraceStoreKernelObjectName) | |
* - User event channel names (vTraceStoreUserEventChannelName) | |
* | |
* If longer symbol names are used, they will be truncated by the recorder, | |
* which will affect the trace display. In that case, there will be warnings | |
* (as User Events) from TzCtrl task, that monitors this. | |
******************************************************************************/ | |
#define TRC_SYMBOL_MAX_LENGTH 25 | |
/******************************************************************************* | |
* Configuration Macro: TRC_OBJECT_DATA_SLOTS | |
* | |
* The maximum number of object data entries (used for task priorities) that can | |
* be stored at the same time. Must be sufficient for all tasks, otherwise there | |
* will be warnings (as User Events) from TzCtrl task, that monitors this. | |
******************************************************************************/ | |
#define TRC_OBJECT_DATA_SLOTS 20 | |
/******************************************************************************* | |
* Configuration Macro: TRC_RTT_UP_BUFFER_INDEX | |
* | |
* Defines the RTT buffer to use for writing the trace data. Make sure that | |
* the PC application has the same setting (File->Settings). | |
* | |
******************************************************************************/ | |
#define TRC_RTT_UP_BUFFER_INDEX 0 | |
/******************************************************************************* | |
* Configuration Macro: TRC_RTT_DOWN_BUFFER_INDEX | |
* | |
* Defines the RTT buffer to use for reading the trace data. Make sure that | |
* the PC application has the same setting (File->Settings). | |
* | |
******************************************************************************/ | |
#define TRC_RTT_DOWN_BUFFER_INDEX 0 | |
/******************************************************************************* | |
* Configuration Macro: TRC_CTRL_TASK_STACK_SIZE | |
* | |
* The stack size of the TzCtrl task, that receive commands. | |
* We are aiming to remove this extra task in future versions. | |
******************************************************************************/ | |
#define TRC_CTRL_TASK_STACK_SIZE (configMINIMAL_STACK_SIZE * 2) | |
/******************************************************************************* | |
* Configuration Macro: TRC_CTRL_TASK_PRIORITY | |
* | |
* The priority of the TzCtrl task, that receive commands from. | |
* We are aiming to remove this extra task in future versions. | |
******************************************************************************/ | |
#define TRC_CTRL_TASK_PRIORITY 1 | |
/******************************************************************************* | |
* Configuration Macro: TRC_CTRL_TASK_DELAY | |
* | |
* The delay between every loop of the TzCtrl task. A high delay will reduce the | |
* CPU load, but may cause missed events if the TzCtrl task is performing the | |
* trace transfer. | |
******************************************************************************/ | |
#define TRC_CTRL_TASK_DELAY ((10 * configTICK_RATE_HZ) / 1000) | |
/******************************************************************************* | |
* Configuration Macro: TRC_MEASURE_BLOCKING_TIME | |
* | |
* If using SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL, this activates detection and | |
* warnings in case of blocking in SEGGER_RTT_Write (if too small buffer). | |
* | |
* If enabling this option (set to 1) warnings are given as User Events if | |
* blocking occurs, including the longest blocking time. These warnings are | |
* given on the channel "Blocking on trace buffer". | |
* | |
* Note: If you get such warnings, you can study the blocking time in the User | |
* Event Signal Plot to get an overview of the magnitude of the blocking and | |
* decide if acceptable. | |
* | |
* To eliminate or at least reduce occurrences of blocking: | |
* | |
* - Verify the J-Link Speed in the Settings dialog of the PC application. | |
* Default is 4 MHz, but can be increased a lot depending on your J-Link. | |
* | |
* Note: If you set the speed higher than your J-Link can manage, the J-Link | |
* driver will instead use the fastest supported speed. The actual speed used | |
* is shown in the title of the trace receiver window. | |
* | |
* - Increase the buffer size (BUFFER_SIZE_UP in SEGGER_RTT_Conf.h). | |
* | |
* - Reduce the amount of data produced, e.g., by removing frequent User Events. | |
******************************************************************************/ | |
#define TRC_MEASURE_BLOCKING_TIME 0 | |
/******************************************************************************* | |
* Configuration Macro: TRC_BLOCKING_MIN_CYCLES | |
* | |
* Threshold value for deciding if SEGGER_RTT_Write has blocked. Most events | |
* take 200-300 cycles on ARM Cortex-M MCUs, so anything above 500 cycles should | |
* be due to blocking on a full buffer (i.e., waiting for the debugger to read | |
* the RTT buffer data and make room for more...). | |
******************************************************************************/ | |
#define TRC_BLOCKING_MIN_CYCLES 500 | |
/******************************************************************************* | |
* Configuration Macro: TRC_RECORDER_BUFFER_ALLOCATION | |
* | |
* Specifies how the recorder buffer is allocated. | |
* | |
* Values: | |
* TRC_RECORDER_BUFFER_ALLOCATION_STATIC | |
* TRC_RECORDER_BUFFER_ALLOCATION_DYNAMIC | |
******************************************************************************/ | |
#define TRC_RECORDER_BUFFER_ALLOCATION TRC_RECORDER_BUFFER_ALLOCATION_STATIC | |
/******************************************************************************* | |
* Configuration Macro: TRC_RECORDER_TRANSFER_METHOD | |
* | |
* Specifies what type of transfer method is used. | |
* | |
* Values: | |
* TRC_RECORDER_TRANSFER_METHOD_JLINK_RTT_BLOCK | |
* TRC_RECORDER_TRANSFER_METHOD_JLINK_RTT_NOBLOCK | |
* TRC_RECORDER_TRANSFER_METHOD_TCPIP | |
* TRC_RECORDER_TRANSFER_METHOD_CUSTOM | |
******************************************************************************/ | |
#define TRC_RECORDER_TRANSFER_METHOD TRC_RECORDER_TRANSFER_METHOD_JLINK_RTT_BLOCK | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_BLOCKING_TRANSFER | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Specifies how the custom transfer method handles full buffers. | |
* | |
* Values: | |
* 0 - The custom transfer method skips sending the data if the buffer is full. | |
* 1 - The custom transfer method blocks on send if the buffer is full. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_BLOCKING_TRANSFER | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_ALLOCATE_FIELDS | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Macro that should allocate any buffers needed for the transfer method. | |
* See trcStreamPort.h for examples. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_ALLOCATE_FIELDS() | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_INIT | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Used to initialize and set up the transfer method. | |
* See trcStreamPort.h for examples. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_INIT() | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_ALLOCATE_EVENT | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Specifies how the trace events that should be sent using the transfer method | |
* are allocated first. | |
* See trcStreamPort.h for examples. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_ALLOCATE_EVENT(_type, _ptr, _size) | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_COMMIT_EVENT | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Specifies how trace events are sent/written. | |
* See trcStreamPort.h for examples. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_COMMIT_EVENT(_ptr, _size) | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_READ_DATA | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Specifies how data is read using the transfer method. | |
* See trcStreamPort.h for examples. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_READ_DATA(_ptrData, _size, _ptrBytesRead) | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_PERIODIC_SEND_DATA | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Specifies how data is sent periodically. Used by certain transfer methods. | |
* See trcStreamPort.h for examples. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_PERIODIC_SEND_DATA(_ptrBytesSent) | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_ON_TRACE_BEGIN | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Called on tracing is started. Use this to perform any necessary steps to | |
* properly start the trace, such as clearing buffers. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_ON_TRACE_BEGIN() | |
/******************************************************************************* | |
* Configuration Macro: TRC_STREAM_CUSTOM_ON_TRACE_END | |
* | |
* Note: Only active if TRC_RECORDER_TRANSFER_METHOD_CUSTOM is used. | |
* | |
* Called when tracing is disabled. Use this to perform any necessary steps to | |
* properly shut down the tracing, such as clearing buffers. | |
******************************************************************************/ | |
#define TRC_STREAM_CUSTOM_ON_TRACE_END() | |
#ifdef __cplusplus | |
} | |
#endif | |
#endif /* TRC_CONFIG_H */ |