/******************************************************************************* * 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 */