📄 l1_trace.h
字号:
#define DYN_TRACE_11 11
#define DYN_TRACE_12 12
#define DYN_TRACE_13 13
#define DYN_TRACE_14 14
#define DYN_TRACE_15 15
#define DYN_TRACE_16 16
#endif
/****************************** Binary trace only *****************************************/
#else
#define DEFAULT_DYN_TRACE_CONFIG 0x000007a7
#endif
/***********************************************************/
/* Trace structures */
/***********************************************************/
// Trace version
typedef struct
{
UWORD32 Opcode;
UWORD32 checksum;
UWORD16 version;
}
T_TRACE_VERSION;
// Condensed trace structure definition
typedef struct
{
BOOL blk_status;
UWORD8 dl_cs_type;
UWORD8 dl_status[8];
UWORD8 ul_status[8];
} T_PDTCH_TRACE;
#if (defined RVM_RTT_SWE || (OP_L1_STANDALONE == 1))
// L1S trace function pointers
typedef struct
{
T_RTT_RET (*rtt_refresh_status) (T_RTT_USER_ID user_id);
T_RTT_PTR (*rtt_get_fill_ptr) (T_RTT_USER_ID user_id,
T_RTT_SIZE size);
T_RTT_RET (*rtt_dump_buffer) (T_RTT_USER_ID user_id,
T_RTT_SIZE dump_size);
} T_L1S_TRACE_FUNC;
#endif
// L1S trace buffer size
#define L1S_RTT_BUF_LENGTH 1000
// Trace configuration
typedef struct
{
UWORD32 l1_dyn_trace;
UWORD32 rttl1_cell_enable[8];
UWORD32 rttl1_event_enable;
} T_TRACE_CONFIG;
// Disable/enable DSP trace structure
#if (TRACE_TYPE == 1) || (TRACE_TYPE == 4)
#if (MELODY_E2 || L1_MP3 || L1_AAC || L1_DYN_DSP_DWNLD )
typedef struct
{
// Flag for blocking dsp trace while performing e2, mp3, aac or dynamic download activities
BOOL trace_flag_blocked;
// Nested Disable dsp trace counter
UWORD8 nested_disable_count;
// Trace level copy to be restored at the end of e2, mp3, aac or dynamic download activities
UWORD16 dsp_trace_level_copy;
} T_DSP_TRACE_HANDLER;
#endif
#endif // (TRACE_TYPE == 1) || (TRACE_TYPE == 4)
#if (TOA_ALGO == 2)
typedef struct
{
UWORD16 toa_frames_counter; // TOA Frames counter - Number of the TDMA frames (or bursts) which are used for TOA
// updation OR number of times l1ctl_toa() function is invoked
// Reset every TOA_PERIOD_LEN[l1_mode] frames
UWORD16 toa_accumul_counter; // Number of TDMA frames (or bursts) which are actually used for TOA tracking
// <= toa_frames_counter, as only if SNR>0.46875 TOA estimated by DSP is used to
// update the tracking algorithm
WORD16 toa_accumul_value; // TOA_tracking_value accumulated over 'toa_accumul_counter' frames
// Based on this value the shift to be applied is decided
}T_TRACE_TOA;
#endif
typedef struct
{
UWORD8 fail_step; // PWMGT Fail Step -> Periph Check OR osload/Timer/Gauging OR While puuting peripherals to sleep
UWORD8 fail_id; // PWMGT Fail ID -> i.e. If Periph Check is the fail step whether failure is because of UART, etc.
UWORD8 fail_cause; // Why the Peripheral returned failure?
}T_TRACE_L1_PWMGR_DEBUG;
#if (AUDIO_DEBUG == 1)
typedef struct
{
UWORD8 vocoder_enable_status;
UWORD8 ul_state;
UWORD8 dl_state;
UWORD8 ul_onoff_counter;
UWORD8 dl_onoff_counter;
}T_TRACE_AUDIO_DEBUG;
#endif
// Debug info structure
typedef struct
{
// User IDs
T_RVT_USER_ID l1_trace_user_id;
#if (defined RVM_RTT_SWE || (OP_L1_STANDALONE == 1))
T_RTT_USER_ID l1s_trace_user_id;
#endif
UWORD8 PM_equal_0;
UWORD8 PM_Task;
UWORD8 Not_PM_Task;
UWORD8 DSP_misaligned;
UWORD8 facch_dl_count;
UWORD8 facch_ul_count;
UWORD8 facch_dl_fail_count;
UWORD8 facch_dl_fail_count_trace;
UWORD8 sacch_d_nerr;
UWORD8 rxlev_req_count;
BOOL init_trace;
UWORD8 abort_task;
#if (L1_BINARY_TRACE == 0)
UWORD8 l1_memorize_error;
UWORD8 trace_fct_buff[TRACE_FCT_BUFF_SIZE];
UWORD8 trace_fct_buff_index;
BOOL trace_buff_stop;
BOOL trace_filter;
#endif
BOOL sleep_performed;
UWORD8 reset_gauging_algo;
#if L1_GPRS
BOOL new_tcr_list;
T_PDTCH_TRACE pdtch_trace;
#endif
#if L1_GTT
T_RVT_USER_ID gtt_trace_user_id;
#endif
#if (L1_MIDI == 1)
T_RVT_USER_ID midi_trace_user_id;
#endif
#if (D_ERROR_STATUS_TRACE_ENABLE)
// define a mask array for handling of the d_error_status field
UWORD16 d_error_status_masks[2];
API d_error_status_old;
#endif
#if (DSP_DEBUG_TRACE_ENABLE == 1)
// Variable used to flag a DSP error, COM mismatch or PM=0 occured
// Array x 2 --> double buffered
// Contains 0 if no error / DSP trace start address if an error occured
UWORD16 dsp_debug_buf_start[2];
UWORD32 dsp_debug_fn[2];
UWORD16 dsp_debug_time[2];
UWORD32 fn_last_dsp_debug;
#endif
// RTT
#if (defined RVM_RTT_SWE || (OP_L1_STANDALONE == 1))
T_L1S_TRACE_FUNC l1s_rtt_func;
UWORD8 l1s_trace_buf[L1S_RTT_BUF_LENGTH];
#endif
UWORD32 task_bitmap[8];
UWORD32 mem_task_bitmap[8];
#if (TOA_ALGO == 2)
T_TRACE_TOA toa_trace_var;
#endif
T_TRACE_L1_PWMGR_DEBUG pwmgt_trace_var;
#if(L1_SAIC != 0)
UWORD8 prev_saic_flag_val;
#endif
// Dynamic trace
T_TRACE_CONFIG config[2];
T_TRACE_CONFIG *current_config;
T_TRACE_CONFIG *pending_config;
#if (TRACE_TYPE == 1) || (TRACE_TYPE == 4)
#if (MELODY_E2 || L1_MP3 || L1_DYN_DSP_DWNLD)
// DSP Trace Handler global variables
T_DSP_TRACE_HANDLER dsptrace_handler_globals;
#endif
#endif // (TRACE_TYPE == 1) || (TRACE_TYPE == 4)
#if (AUDIO_DEBUG == 1)
T_TRACE_AUDIO_DEBUG audio_debug_var;
#endif
#if (L1_RF_KBD_FIX == 1)
UWORD16 prev_correction_ratio;
#endif
}
T_TRACE_INFO_STRUCT;
extern T_TRACE_INFO_STRUCT trace_info;
/***********************/
/* Function prototypes */
/***********************/
void l1_init_trace_var (void);
void l1_trace_init (void);
void Trace_L1s_Abort (UWORD8 task);
void Trace_MCU_DSP_Com_Mismatch (UWORD8 task);
void Trace_PM_Equal_0 (UWORD32 pm, UWORD8 task);
void Trace_rlc_ul_param (UWORD8 assignment_id,
UWORD8 tx_no,
UWORD32 fn,
UWORD8 ta,
UWORD32 a_pu_gprs,
UWORD32 a_du_gprs,
BOOL fix_alloc_exhaust);
void Trace_rlc_dl_param (UWORD8 assignment_id,
UWORD32 fn,
UWORD32 d_rlcmac_rx_no_gprs,
UWORD8 rx_no,
UWORD8 rlc_blocks_sent,
UWORD8 last_poll_response);
void Trace_uplink_no_TA (void);
void Trace_condensed_pdtch (UWORD8 rx_allocation, UWORD8 tx_allocation);
void Trace_dl_ptcch (UWORD8 ordered_ta,
UWORD8 crc,
UWORD8 ta_index,
UWORD8 ts,
UWORD16 elt1,
UWORD16 elt2,
UWORD16 elt3,
UWORD16 elt4,
UWORD16 elt5,
UWORD16 elt6,
UWORD16 elt7,
UWORD16 elt8);
void Trace_d_error_status (void);
void Trace_dsp_debug (void);
#if (AMR == 1)
void Trace_dsp_amr_debug (void);
#endif
void Trace_params (UWORD8 debug_code,
UWORD32 param0,
UWORD32 param1,
UWORD32 param2,
UWORD32 param3,
UWORD32 param4,
UWORD32 param5,
UWORD32 param6);
void Trace_L1S_CPU_load (void);
void Trace_dyn_trace_change (void);
#if (AMR == 1)
void l1_trace_ratscch (UWORD16 fn, UWORD16 amr_change_bitmap);
#endif
void l1_trace_sleep (UWORD32 start_fn,
UWORD32 end_fn,
UWORD8 type_sleep,
UWORD8 wakeup_type,
UWORD8 big_sleep_type,
UWORD16 int_id);
void l1_trace_fail_sleep (UWORD8 pwmgr_fail_step,
UWORD8 pwmgr_fail_id,
UWORD8 pwmgr_fail_cause);
void l1_trace_sleep_intram (UWORD32 start_fn,
UWORD32 end_fn,
UWORD8 type_sleep,
UWORD8 wakeup_type,
UWORD8 big_sleep_type,
UWORD16 int_id);
void l1_trace_gauging_reset (void);
void l1_trace_gauging (void);
void l1_trace_gauging_intram (void);
#if (L1_SAIC != 0)
void l1_trace_saic (UWORD32 SWH_flag);
#endif
#if (L1_NAVC_TRACE == 1)
void l1_trace_navc (UWORD32 status, UWORD32 energy_level);
#endif
void l1_trace_burst_param (UWORD32 angle,
UWORD32 snr,
UWORD32 afc,
UWORD32 task,
UWORD32 pm,
UWORD32 toa_val,
UWORD32 IL_for_rxlev);
void l1_log_burst_param (UWORD32 angle,
UWORD32 snr,
UWORD32 afc,
UWORD32 task,
UWORD32 pm,
UWORD32 toa_val,
UWORD32 IL_for_rxlev);
void l1_trace_new_toa (void);
void l1_trace_new_toa_intram (void);
void l1_trace_toa_not_updated (void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -