⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssp_spy.h

📁 abstract rtos
💻 H
字号:
#ifdef __cplusplusextern "C"{#endif#include "ssp_except.h"#ifndef _SSP_SPY_H_#define _SSP_SPY_H_#define CONFIG_TASK_SWITCH_TRACK_NUM 10#define SPY_RUN_TICK            100#define SPY_ISR_TICK            20#define SPY_RUN_DEADLINE_IN_TICK (120*100) #define SPY_STACK_LAYER         512#define SPY_TASK_NUM            4#define SPY_ON                  TRUE#define SPY_OFF                 FALSE#define SPY_INIT_FLAG           0XABCDABCD#define SPY_STACK_DEFAULT_VALUE 0XEEEEEEEE#define SPY_STACK_BOTTOM_VALUE  0XABCDABCD#define SPY_NVRAM_ADDR          0X0#define DBG_MAX_MSG_LEN      40#define DBG_MAX_ASSERT_NUM   20#define DBG_MAGIC_NUM        0x5A2CF071UL#define DBG_MAX_TRACK_LEN    100#define MSG_IN  1#define MSG_OUT 2#define TRACE_IN    1#define TRACE_OUT   2#define TRACE_INFO  4#define MAX_TRACE_ITEM_PER_TASK 4#define MAX_STACK_LEVEL 64#define AOS_MINI_SYSTEM_FLAG   0x5A5577AAUL#define AOS_NORNAL_SYSTEM_FLAG 0#define DBG_SOFTWARE_RESET_MAGIC_STR  "@AosRstMagic#$%" #if( CONFIG_OS_VXWORKS == TRUE && ( CONFIG_BOARD_GMPU == TRUE || CONFIG_BOARD_GDSP == TRUE ) )#define DBG_SOFTWARE_RESET_MAGIC_ADDR (CONFIG_DEBUG_INFO_ADDR+CONFIG_DEBUG_INFO_LEN-24)#else#define DBG_SOFTWARE_RESET_MAGIC_ADDR ((U32)dbg_pool+CONFIG_DEBUG_INFO_LEN-24)#endifstruct stack_state{    U32 *stack_addr;                           U32 *next_inst_addr;                   };typedef struct task_switch_trace_item{    U32  m_ulPowerOn;                         U32  m_ulTaskId;                          S8   m_cName[AOS_NAME_LEN];               U32  m_ulMaxTick;                         U32  m_ulRunTick;                         U8   m_uDate;                             U8   m_uHour;    U8   m_uMinute;    U8   m_uSecond;    U32  m_ulMillisec;    U32  m_ulLoop;                            U32  m_ulPc;                              U32  m_ulSp;                              U32 m_aStack[EXCEPTION_STACK_SIZE];       struct stack_layer m_aStackLayer[EXCEPTION_STACK_LAYER];     }TASK_INFINITE_LOOP_ITEM_S;typedef struct task_switch_trace{    U32 m_ulInitFlag;    U32 m_ulIndex;    TASK_INFINITE_LOOP_ITEM_S m_aItem[SPY_TASK_NUM];}TASK_INFINITE_LOOP_TRACE_S;typedef struct tsk_sw_track_s{    U32 cur_count;    U32 cur_index;    U32 cur_task;    U32 last_tasks[CONFIG_TASK_SWITCH_TRACK_NUM];    CPU_TICK_S last_ticks[CONFIG_TASK_SWITCH_TRACK_NUM];}TSK_SW_TRACK_S;typedef struct assert_item_s{    SYS_TIME_S tm;    S8         assert_str[200];}ASSERT_ITEM_S;typedef struct assert_info_s{    U32 cur_index,count;    ASSERT_ITEM_S assert_item[DBG_MAX_ASSERT_NUM];}ASSERT_INFO_S;typedef struct dbg_trace_item{    U8   info_class;    U8   int_count;     U16  line;          S8   *name;         U32  paras[4];      U32  sn;             U32  sec;            U32  usec;      }DBG_TRACE_ITEM;typedef struct dbg_trace_info{    S8  task_name[AOS_NAME_LEN];    U8  is_deleted;     U8  is_full;        U8  is_stop;        U8  padding;    S32 stack_level;    U32 next_index;     DBG_TRACE_ITEM trace_item[MAX_TRACE_ITEM_PER_TASK];}DBG_TRACE_INFO;typedef struct dbg_info_s{    EXCEPTION_BUF_S exc_info;    TSK_SW_TRACK_S  tsk_sw_info;    TASK_INFINITE_LOOP_TRACE_S infinite_loop_task;    U32             last_msg_ptr;    U8              last_msg[DBG_MAX_MSG_LEN+4];    ASSERT_INFO_S   assert_info;    S8              run_track[DBG_MAX_TRACK_LEN+4];    DBG_TRACE_INFO  trace_info[CONFIG_TASK_NUMBER];    U32             tick_is_handling;}DBG_INFO_S;typedef struct dbg_info_pool_s{    U32        magic1;    U32        cur_dbg_index;    U32        count;        U32        cur_mini_system_flag1;    U32        next_syetem_flag1;#if( CONFIG_BOARD_GMPU == TRUE || CONFIG_BOARD_GDSP == TRUE )        DBG_INFO_S dbg_info[4];#else    DBG_INFO_S dbg_info[2];#endif    U32        cur_mini_system_flag2;    U32        next_syetem_flag2;    U32        min_start_count;    U32        magic2;}DBG_POOL_S;U32 m_spy_init();VOID ssp_task_spy();VOID ssp_stack_spy();VOID ssp_stack_check(U32 ulTaskID);VOID ssp_add_task_switch_track( U32 sys_last_task, U32 sys_next_task );VOID ssp_show_task_switch_track();TASK_INFINITE_LOOP_TRACE_S* ssp_get_task_infinite_loop_cb_base();U32 m_dbg_info_init();VOID dbg_track_msg_in( VOID* msgp);VOID dbg_track_msg_out( );VOID dbg_track_assert( S8 *cond, S8*file, U32 line );VOID dbg_track_run_flow( S8 *fmt, ... );VOID dbg_track_tick_state( U32 state );DBG_INFO_S *dbg_get_dbg_info( U32 dbg_index );VOID dbg_show_exc_info( U32 dbg_index );VOID dbg_show_exc_item(  EXCEPTION_ITEM_S *pItem );VOID dbg_show_tsk_sw_info( U32 dbg_index );VOID dbg_show_infinite_loop_info( U32 dbg_index );VOID dbg_show_last_msg_info( U32 dbg_index );VOID dbg_show_assert_info( U32 dbg_index );VOID dbg_show_run_flow( U32 dbg_index );VOID aos_show_trace( U32 dbg_index, U32 task_id, U32 count );VOID dbg_force_reset();VOID dbg_info_log();#endif#ifdef __cplusplus}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -