123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579 |
- /*********************************************************************
- * SEGGER Microcontroller GmbH *
- * The Embedded Experts *
- **********************************************************************
- * *
- * (c) 1995 - 2021 SEGGER Microcontroller GmbH *
- * *
- * www.segger.com Support: support@segger.com *
- * *
- **********************************************************************
- * *
- * SEGGER SystemView * Real-time application analysis *
- * *
- **********************************************************************
- * *
- * All rights reserved. *
- * *
- * SEGGER strongly recommends to not make any changes *
- * to or modify the source code of this software in order to stay *
- * compatible with the SystemView and RTT protocol, and J-Link. *
- * *
- * Redistribution and use in source and binary forms, with or *
- * without modification, are permitted provided that the following *
- * condition is met: *
- * *
- * o Redistributions of source code must retain the above copyright *
- * notice, this condition and the following disclaimer. *
- * *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
- * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
- * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
- * DAMAGE. *
- * *
- **********************************************************************
- * *
- * SystemView version: 3.32 *
- * *
- **********************************************************************
- -------------------------- END-OF-HEADER -----------------------------
- File : SEGGER_SYSVIEW_ConfDefaults.h
- Purpose : Defines defaults for configurable defines used in
- SEGGER SystemView.
- Revision: $Rev: 26230 $
- */
- #ifndef SEGGER_SYSVIEW_CONFDEFAULTS_H
- #define SEGGER_SYSVIEW_CONFDEFAULTS_H
- /*********************************************************************
- *
- * #include Section
- *
- **********************************************************************
- */
- #include "SEGGER_SYSVIEW_Conf.h"
- #include "SEGGER_RTT_Conf.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*********************************************************************
- *
- * Defines, fixed
- *
- **********************************************************************
- */
- //
- // Use auto-detection for SEGGER_SYSVIEW_CORE define
- // based on compiler-/toolchain-specific defines
- // to define SEGGER_SYSVIEW_GET_INTERRUPT_ID and SEGGER_SYSVIEW_GET_TIMESTAMP
- //
- #define SEGGER_SYSVIEW_CORE_OTHER 0
- #define SEGGER_SYSVIEW_CORE_CM0 1 // Cortex-M0/M0+/M1
- #define SEGGER_SYSVIEW_CORE_CM3 2 // Cortex-M3/M4/M7
- #define SEGGER_SYSVIEW_CORE_RX 3 // Renesas RX
- #ifndef SEGGER_SYSVIEW_CORE
- #if (defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __SEGGER_CC__) || (defined __GNUC__) || (defined __clang__)
- #if (defined __ARM_ARCH_6M__) || (defined __ARM_ARCH_8M_BASE__)
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
- #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__))
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
- #endif
- #elif defined(__ICCARM__)
- #if (defined (__ARM6M__) && (__CORE__ == __ARM6M__)) \
- || (defined (__ARM8M_BASELINE__) && (__CORE__ == __ARM8M_BASELINE__))
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
- #elif (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) \
- || (defined (__ARM7M__) && (__CORE__ == __ARM7M__)) \
- || (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) \
- || (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__))
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
- #endif
- #elif defined(__CC_ARM)
- #if (defined(__TARGET_ARCH_6S_M))
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
- #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
- #endif
- #elif defined(__TI_ARM__)
- #ifdef __TI_ARM_V6M0__
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
- #elif (defined(__TI_ARM_V7M3__) || defined(__TI_ARM_V7M4__))
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
- #endif
- #elif defined(__ICCRX__)
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_RX
- #elif defined(__RX)
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_RX
- #endif
- #ifndef SEGGER_SYSVIEW_CORE
- #define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_OTHER
- #endif
- #endif
- /*********************************************************************
- *
- * Defines, defaults
- *
- **********************************************************************
- */
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_APP_NAME
- *
- * Description
- * The application name to be displayed in SystemView.
- * Default
- * "SystemView-enabled Application"
- * Notes
- * Convenience define to be used for SEGGER_SYSVIEW_SendSysDesc().
- */
- #ifndef SEGGER_SYSVIEW_APP_NAME
- #define SEGGER_SYSVIEW_APP_NAME "SystemView-enabled Application"
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_DEVICE_NAME
- *
- * Description
- * The target device name to be displayed in SystemView.
- * Default
- * "undefined device"
- * Notes
- * Convenience define to be used for SEGGER_SYSVIEW_SendSysDesc().
- */
- #ifndef SEGGER_SYSVIEW_DEVICE_NAME
- #define SEGGER_SYSVIEW_DEVICE_NAME "undefined device"
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_GET_INTERRUPT_ID()
- *
- * Description
- * Function macro to retrieve the Id of the currently active
- * interrupt.
- * Default
- * Call user-supplied function SEGGER_SYSVIEW_X_GetInterruptId().
- * Notes
- * For some known compilers and cores, a ready-to-use, core-specific
- * default is set.
- * ARMv7M: Read ICSR[8:0] (active vector)
- * ARMv6M: Read ICSR[5:0] (active vector)
- */
- #ifndef SEGGER_SYSVIEW_GET_INTERRUPT_ID
- #if SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM3
- #define SEGGER_SYSVIEW_GET_INTERRUPT_ID() ((*(U32*)(0xE000ED04)) & 0x1FF) // Get the currently active interrupt Id. (i.e. read Cortex-M ICSR[8:0] = active vector)
- #elif SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM0
- #if defined(__ICCARM__)
- #if (__VER__ > 6010000)
- #define SEGGER_SYSVIEW_GET_INTERRUPT_ID() (__get_IPSR()) // Workaround for IAR, which might do a byte-access to 0xE000ED04. Read IPSR instead.
- #else
- #define SEGGER_SYSVIEW_GET_INTERRUPT_ID() ((*(U32*)(0xE000ED04)) & 0x3F) // Older versions of IAR do not include __get_IPSR, but might also not optimize to byte-access.
- #endif
- #else
- #define SEGGER_SYSVIEW_GET_INTERRUPT_ID() ((*(U32*)(0xE000ED04)) & 0x3F) // Get the currently active interrupt Id. (i.e. read Cortex-M ICSR[5:0] = active vector)
- #endif
- #else
- #define SEGGER_SYSVIEW_GET_INTERRUPT_ID() SEGGER_SYSVIEW_X_GetInterruptId() // Get the currently active interrupt Id from the user-provided function.
- #endif
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_GET_TIMESTAMP()
- *
- * Description
- * Function macro to retrieve a system timestamp for SYSVIEW events.
- * Default
- * Call user-supplied function SEGGER_SYSVIEW_X_GetTimestamp().
- * Notes
- * For some known compilers and cores, a ready-to-use, core-specific
- * default is set.
- * ARMv7M: Read Cortex-M Cycle Count register.
- *
- * The system timestamp clock frequency has to be passed in
- * SEGGER_SYSVIEW_Init().
- */
- #ifndef SEGGER_SYSVIEW_GET_TIMESTAMP
- #if defined (SEGGER_SYSVIEW_CORE) && (SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM3)
- #define SEGGER_SYSVIEW_GET_TIMESTAMP() (*(U32 *)(0xE0001004)) // Retrieve a system timestamp. Cortex-M cycle counter.
- #else
- #define SEGGER_SYSVIEW_GET_TIMESTAMP() SEGGER_SYSVIEW_X_GetTimestamp() // Retrieve a system timestamp via user-defined function
- #endif
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_TIMESTAMP_BITS
- *
- * Description
- * Number of valid (low-order) bits delivered in system timestamp.
- * Default
- * 32
- * Notes
- * Value has to match system timestamp clock source.
- */
- // Define number of valid bits low-order delivered by clock source.
- #ifndef SEGGER_SYSVIEW_TIMESTAMP_BITS
- #define SEGGER_SYSVIEW_TIMESTAMP_BITS 32
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_RTT_CHANNEL
- *
- * Description
- * The RTT channel that SystemView will use.
- * Default
- * 0: Auto selection.
- * Notes
- * Value has to be lower than SEGGER_RTT_MAX_NUM_UP_BUFFERS.
- */
- #ifndef SEGGER_SYSVIEW_RTT_CHANNEL
- #define SEGGER_SYSVIEW_RTT_CHANNEL 0
- #endif
- // Sanity check of RTT channel
- #if (SEGGER_SYSVIEW_RTT_CHANNEL == 0) && (SEGGER_RTT_MAX_NUM_UP_BUFFERS < 2)
- #error "SEGGER_RTT_MAX_NUM_UP_BUFFERS in SEGGER_RTT_Conf.h has to be > 1!"
- #elif (SEGGER_SYSVIEW_RTT_CHANNEL >= SEGGER_RTT_MAX_NUM_UP_BUFFERS)
- #error "SEGGER_RTT_MAX_NUM_UP_BUFFERS in SEGGER_RTT_Conf.h has to be > SEGGER_SYSVIEW_RTT_CHANNEL!"
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_RTT_BUFFER_SIZE
- *
- * Description
- * Number of bytes that SystemView uses for the RTT buffer.
- * Default
- * 1024
- */
- #ifndef SEGGER_SYSVIEW_RTT_BUFFER_SIZE
- #define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 1024
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_SECTION
- *
- * Description
- * Section to place the SystemView RTT Buffer into.
- * Default
- * undefined: Do not place into a specific section.
- * Notes
- * If SEGGER_RTT_SECTION is defined, the default changes to use
- * this section for the SystemView RTT Buffer, too.
- */
- #if !(defined SEGGER_SYSVIEW_SECTION) && (defined SEGGER_RTT_SECTION)
- #define SEGGER_SYSVIEW_SECTION SEGGER_RTT_SECTION
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_CPU_CACHE_LINE_SIZE
- *
- * Description
- * Largest cache line size (in bytes) in the target system.
- * Default
- * 0
- * Notes
- * Required in systems with caches to make sure that the SystemView
- * RTT buffer can be aligned accordingly.
- */
- #ifndef SEGGER_SYSVIEW_CPU_CACHE_LINE_SIZE
- #define SEGGER_SYSVIEW_CPU_CACHE_LINE_SIZE 0
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_ID_BASE
- *
- * Description
- * Lowest Id reported by the application.
- * Default
- * 0
- * Notes
- * Value is usually subtracted from mailboxes, semaphores, tasks,
- * .... addresses, to compress event parameters.
- * Should be the lowest RAM address of the system.
- */
- #ifndef SEGGER_SYSVIEW_ID_BASE
- #define SEGGER_SYSVIEW_ID_BASE 0
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_ID_SHIFT
- *
- * Description
- * Number of bits to shift Ids.
- * Default
- * 0
- * Notes
- * Ids are shifted to compress event parameters.
- * Should match the alignment of Ids (addresses),
- * e.g. 2 when Ids are 4 byte aligned.
- */
- #ifndef SEGGER_SYSVIEW_ID_SHIFT
- #define SEGGER_SYSVIEW_ID_SHIFT 0
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_MAX_ARGUMENTS
- *
- * Description
- * Maximum number of arguments which are handled with SystemView
- * print routines or may be encoded in one recording function.
- * routines.
- * Default
- * 16
- */
- #ifndef SEGGER_SYSVIEW_MAX_ARGUMENTS
- #define SEGGER_SYSVIEW_MAX_ARGUMENTS 16
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_MAX_STRING_LEN
- *
- * Description
- * Maximum string length which can be used in SystemView print and
- * system description routines.
- * Default
- * 128
- */
- #ifndef SEGGER_SYSVIEW_MAX_STRING_LEN
- #define SEGGER_SYSVIEW_MAX_STRING_LEN 128
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_SUPPORT_LONG_ID
- *
- * Description
- * It set, support enconding Evend Ids longer than 14 bit.
- * Default
- * 1
- */
- #ifndef SEGGER_SYSVIEW_SUPPORT_LONG_ID
- #define SEGGER_SYSVIEW_SUPPORT_LONG_ID 1
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_SUPPORT_LONG_DATA
- *
- * Description
- * It set, support enconding event data longer than 14 bit.
- * Default
- * 0
- */
- #ifndef SEGGER_SYSVIEW_SUPPORT_LONG_DATA
- #define SEGGER_SYSVIEW_SUPPORT_LONG_DATA 0
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT
- *
- * Description
- * If enabled, on SEGGER_SYSVIEW_PrintHost, check the format string
- * and if it includes unsupported formatters, use formatting on the
- * target instead.
- * Default
- * 0: Disabled.
- */
- #ifndef SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT
- #define SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT 0
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_USE_INTERNAL_RECORDER
- *
- * Description
- * If set, an internal recorder, such as UART or IP is used.
- * Default
- * 0: Disabled.
- * Notes
- * Convenience define to be used by SEGGER_SYSVIEW_Conf(),
- * such as in embOS configuration to enable Cortex-M cycle counter.
- */
- #ifndef SEGGER_SYSVIEW_USE_INTERNAL_RECORDER
- #define SEGGER_SYSVIEW_USE_INTERNAL_RECORDER 0
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_CAN_RESTART
- *
- * Description
- * If enabled, send the SystemView start sequence on every start
- * command, not just on the first one.
- * Enables restart when SystemView disconnected unexpectedly.
- * Default
- * 1: Enabled
- */
- #ifndef SEGGER_SYSVIEW_CAN_RESTART
- #define SEGGER_SYSVIEW_CAN_RESTART 1
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_START_ON_INIT
- *
- * Description
- * Enable calling SEGGER_SYSVIEW_Start() after initialization.
- * Default
- * 0: Disabled.
- * Notes
- * Convenience define to be used by SEGGER_SYSVIEW_Conf(),
- * such as in embOS configuration.
- */
- #ifndef SEGGER_SYSVIEW_START_ON_INIT
- #define SEGGER_SYSVIEW_START_ON_INIT 0
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_USE_STATIC_BUFFER
- *
- * Description
- * If enabled, use a static buffer instead of a buffer on the stack
- * for SystemView event packets.
- * Default
- * 1: Enabled.
- * Notes
- * If enabled, the static memory use by SystemView is increased by
- * the maximum packet size. SystemView is locked on entry of a
- * recording function.
- * If disabled, the stack usage by SystemView recording functions
- * might be increased by up to the maximum packet size. SystemView
- * is locked when writing the packet to the RTT buffer.
- */
- #ifndef SEGGER_SYSVIEW_USE_STATIC_BUFFER
- #define SEGGER_SYSVIEW_USE_STATIC_BUFFER 1
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_MAX_PACKET_SIZE
- *
- * Description
- * Maximum packet size for a SystemView event.
- * Default
- * Automatically calculated.
- * Notes
- * The maximum packet size is mainly defined by the maximum string
- * length and the maximum number of arguments.
- */
- #ifndef SEGGER_SYSVIEW_MAX_PACKET_SIZE
- #define SEGGER_SYSVIEW_MAX_PACKET_SIZE (SEGGER_SYSVIEW_INFO_SIZE + SEGGER_SYSVIEW_MAX_STRING_LEN + 2 * SEGGER_SYSVIEW_QUANTA_U32 + SEGGER_SYSVIEW_MAX_ARGUMENTS * SEGGER_SYSVIEW_QUANTA_U32)
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_POST_MORTEM_MODE
- *
- * Description
- * If enabled, SystemView records for post-mortem analysis instead
- * of real-time analysis.
- * Default
- * 0: Disabled.
- * Notes
- * For more information refer to
- * https://www.segger.com/products/development-tools/systemview/technology/post-mortem-mode
- */
- #ifndef SEGGER_SYSVIEW_POST_MORTEM_MODE
- #define SEGGER_SYSVIEW_POST_MORTEM_MODE 0
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT
- *
- * Description
- * Configure how frequently syncronization is sent in post-mortem
- * mode.
- * Default
- * 8: (1 << 8) = Every 256 Events.
- * Notes
- * In post-mortem mode, at least one sync has to be in the RTT buffer.
- * Recommended sync frequency: Buffer Size / 16
- * For more information refer to
- * https://www.segger.com/products/development-tools/systemview/technology/post-mortem-mode
- */
- #ifndef SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT
- #define SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT 8
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_ON_EVENT_RECORDED()
- *
- * Description
- * Function macro to notify recorder about a new event in buffer.
- * Default
- * undefined: Do not notify recorder.
- * Notes
- * Used for non-J-Link recorder,
- * such as to enable transmission via UART or notify IP task.
- */
- #ifndef SEGGER_SYSVIEW_ON_EVENT_RECORDED
- #define SEGGER_SYSVIEW_ON_EVENT_RECORDED(NumBytes)
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_LOCK()
- *
- * Description
- * Function macro to (nestable) lock SystemView recording.
- * Default
- * Use RTT Locking mechanism (defined by SEGGER_RTT_LOCK()).
- * Notes
- * If SystemView recording is not locked, recording events from
- * interrupts and tasks may lead to unpredictable, undefined, event
- * data.
- */
- #ifndef SEGGER_SYSVIEW_LOCK
- #define SEGGER_SYSVIEW_LOCK() SEGGER_RTT_LOCK()
- #endif
- /*********************************************************************
- *
- * Define: SEGGER_SYSVIEW_UNLOCK
- *
- * Description
- * Function macro to unlock SystemView recording.
- * Default
- * Use RTT Unlocking mechanism (defined by SEGGER_RTT_UNLOCK()).
- */
- #ifndef SEGGER_SYSVIEW_UNLOCK
- #define SEGGER_SYSVIEW_UNLOCK() SEGGER_RTT_UNLOCK()
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
- /*************************** End of file ****************************/
|