blob: 3ada261bf95ab43c0687843a1ab9b58fb9171657 [file] [log] [blame]
/*******************************************************************************
* 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 */