diff src/cs/riviera/rvt/ti_profiler/ti_profiler.h @ 0:4e78acac3d88

src/{condat,cs,gpf,nucleus}: import from Selenite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:23:26 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cs/riviera/rvt/ti_profiler/ti_profiler.h	Fri Oct 16 06:23:26 2020 +0000
@@ -0,0 +1,151 @@
+/************************************************************************************
+* ti_profiler.h :  contains ti profiling and Nucleus Monitoring module header                              *
+*																					*	
+*																					*
+*	Author: Philippe Martinez														*
+*																					*
+*	version: 1.1																	*
+*																					*
+*	Date: 07/16/2001																*
+*   (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved		*		
+************************************************************************************/
+
+
+#ifndef _TI_PROFILER_H_
+  #define _TI_PROFILER_H_
+
+  #define INFINITE_LOOP               ( 1 )
+  #define L1_TRACER		      ( 1 )  // Add debug traces into Layer 1 stream
+
+  // Log buffer size in 32 bit words  (profiler only)
+  #define PR_BUFFER_SIZE              ( 20000 )
+  #define PR_BUFFER_THRESHOLD         ( PR_BUFFER_SIZE - 95 )
+
+
+  // buffer OP code	(profiler only)
+  #define C_OP_CODE_START_PR          ( 0xfffffff0 )
+  #define C_OP_CODE_STOP_PR           ( 0xfffffffe )
+
+  #define C_OP_CODE_BEGIN_BUFFER      ( 0xfffffff0 )
+  #define C_OP_CODE_TDMA_BEGIN        ( 0xfffffff2 )
+  #define C_OP_CODE_TDMA_END          ( 0xfffffff4 )
+  #define C_OP_CODE_END_BUFFER        ( 0xfffffff8 )
+
+  // Rx message ID code	(profiler only)
+  #define TI_PROFILER_END_PROFILING   ( 0x0000 )
+  #define TI_PROFILER_START_PROFILING ( 0x0001 )
+
+  #define TI_PROFILER_OUTPUT_BUFFER   ( 0xffff )
+
+
+  // Timer used	 (profiler only)
+  #define PR_TIMER_NUM                ( 1 ) 
+
+  #define PR_TIMER_RESET_VALUE        ( 21 )  // load value 50 us
+
+  // define the length of cutted element buffer in order to
+  // Generate rvt messages. (profiler only)
+  #define TRACE_MESSAGE_SIZE	      ( 50 )  // x4 = n bytes
+
+  // Nucleus monitoring buffer size (bytes) for rvt (Nucleus Monitoring only)
+  #define NUC_MONITOR_BUFFER_SIZE     ( 240 )
+
+  // Nucleus Monitoring Buffer (Nucleus Monitoring only)
+  #define C_OP_CODE_NUC_MON_THREAD_IDS ( 0xff )
+  #define C_OP_CODE_FN_LOG   		   ( 0x00 )
+  #define C_OP_CODE_LISR_FLAG          ( 0xC0 )
+  #define C_OP_CODE_THREAD_FLAG        ( 0x80 )
+  #define C_OP_CODE_QUEUE_FLAG         ( 0x40 )
+
+  // Rx message ID code (Nucleus Monitoring only)
+  #define TI_NUC_MONITOR_OUTPUT_BUFFER ( 0xfff0 )
+  #define TI_NUC_MONITOR_START         ( 0x0002 )
+  #define TI_NUC_MONITOR_STOP          ( 0x0003 )
+
+  // ID Thread NULL (Nucleus Monitoring only)
+  #define NUC_MONITOR_ID_IDLE         ( 0xff )
+
+  // Nuleus monitoring : Number max of component of same type
+  // that can be monitored	(Nucleus Monitoring only)
+  #define NUC_MONITOR_MAX_ID          ( 64 )
+
+  // Define LISR doubled buffer Size (Nucleus Monitoring only)
+  #define C_NUC_LISR_BUF_PG_NB        ( 2 )
+  #define C_NUC_LISR_LOG_SZ           ( 5 )  // bytes
+
+  // Must be strickly < NUC_MONITOR_BUFFER_SIZE	(Nucleus Monitoring only)
+  #define C_NUC_MAX_LISR              ( 20 *  C_NUC_LISR_LOG_SZ )
+
+  // Define LISR doubled buffer Size (Nucleus Monitoring only)
+  #define C_NUC_THREAD_BUF_PG_NB        ( 2 )
+  #define C_NUC_THREAD_LOG_SZ           ( 3 )  // bytes
+
+  // Must be strickly < NUC_MONITOR_BUFFER_SIZE (Nucleus Monitoring only)
+  #define C_NUC_MAX_THREAD              ( 30 *  C_NUC_THREAD_LOG_SZ )
+
+  // Differents state of profiling
+  typedef enum 
+    {               
+      PROFILER_STOPPED,
+      PROFILER_RUNNING,
+      PROFILER_FREEZED,
+      PROFILER_TO_BE_RAN,
+      PROFILER_TO_BE_UNFREEZED,
+      PROFILER_TO_BE_STOPPED
+    } T_PROFILER_STATE;
+
+  // Differents state of nucleus monitoring	(Nucleus Monitoring only)
+  typedef enum 
+    {               
+      NUC_MONITOR_STOPPED,
+      NUC_MONITOR_RUNNING,
+	  NUC_MONITOR_TO_BE_RUN,
+	  NUC_MONITOR_TO_BE_STARTED,
+	  NUC_MONITOR_TO_BE_STOP,
+	  NUC_MONITOR_WAITING
+	} T_NUC_MONITOR_STATE;
+
+  typedef enum 
+    {               
+      LOGGING,
+      FLUSH
+    } T_PROFILER_BUFFER_STATE;
+
+  typedef enum 
+    {               
+      NOT_ACTIVE,
+      ACTIVE_BY_TI,
+      ACTIVE_BY_EXT,
+      ACTIVE_BY_HOST
+    } T_PROFILER_HANDLER;
+
+  typedef enum 
+    {               
+      NO_EVENT,
+      NO_SLEEP_EVENT,
+      EVENT2,
+      EVENT3,
+	  EVENT4
+    } T_PROFILER_EVENTS;
+
+  typedef struct 
+    {
+      SYS_UWORD16  msg_id;
+      SYS_UWORD8   event_number;
+	  SYS_UWORD8   arg1;
+      SYS_UWORD8   *p_buffer;
+      SYS_UWORD8   buffer_size;
+    } T_PROFILER_MSG_UART;
+
+  typedef struct 
+    {
+      T_RV_HDR     header;
+      SYS_UWORD16  msg_id;
+      SYS_UWORD8   event_number;
+	  SYS_UWORD8   arg1;
+      SYS_UWORD8   *p_buffer;
+      SYS_UWORD8   buffer_size;
+    } T_PROFILER_MSG;
+
+#endif
+