📄 ssp_debug.c
字号:
break; case 80: #if (AOS_INCLUDE_SERVICE_RTPRTCP == TRUE) if(0 == subcmd) { rtp_show_packet_invalid(); } else if(1 == subcmd) { rtp_clear_packet_invalid(); } #endif break;#if( CONFIG_OS_VXWORKS == TRUE ) case 90: aos_printf( 0, "memFindMax = 0x%x\r\n", memFindMax() ); break;#endif case 91: { extern U32 g_ulTimerQueueFailCnt; aos_printf( 0, "g_ulTimerQueueFailCnt=%u", g_ulTimerQueueFailCnt ); } break; case 92: { extern U32 g_ulTimerQueueFailCnt; aos_printf( 0, "set g_ulTimerQueueFailCnt to zero" ); g_ulTimerQueueFailCnt = 0; } break; case 93: { extern struct msg_blk_que lcm_phy_que;#ifdef _EIA2000V5 extern struct msg_blk_que g_stEthRxQueue;#endif aos_printf( 0, "lcm que len = %u ", lcm_phy_que.qlen );#ifdef _EIA2000V5 aos_printf( 0, "eth rx que len = %u ", g_stEthRxQueue.qlen );#endif } break; case 94: { extern g_ulShowFreeMem; aos_printf( 0, "g_ulShowFreeMem = %u ", g_ulShowFreeMem ); } break; case 95: { extern g_ulShowFreeMem; aos_printf( 0, "set g_ulShowFreeMem = %u ", subcmd ); g_ulShowFreeMem = subcmd; } break; case 200: if( 200 == subcmd ) { U32 sector; aos_printf( MPE_DEBUG, "To Erase Flash at 0x%x", p1 );#if( CONFIG_OS_VXWORKS == TRUE ) sector = flash_get_sector_base( p1 ); flash_erase_sector(sector);#endif } break; case 201: #if( CONFIG_BOARD_GMPU == TRUE ) { U8 szFileName[20]; U32 ulRet; aos_printf( MPE_DEBUG, "backup memory at 0x%x size 0x%x to ip %A", subcmd, p1, p2 ); aos_snprintf(szFileName, sizeof(szFileName), "mem_%x.dat", subcmd ); ulRet = tftp_putup(MPE_DEBUG, p2, szFileName, (VOID*)subcmd, p1, 0); if (ulRet != AOS_SUCC) { aos_printf(MPE_DEBUG, "Fail !"); } else { aos_printf(MPE_DEBUG, "Loading .... "); } } #endif break; case 0: aos_printf( MPE_DEBUG, "" ); aos_printf( MPE_DEBUG, "Allywll Debuger Aid Help" ); aos_printf( MPE_DEBUG, "1.System command" ); aos_printf( MPE_DEBUG, "1.1 cmd mpe xx xx xx xx" ); aos_printf( MPE_DEBUG, "1.2 turnon mpe----enable mpe to print" ); aos_printf( MPE_DEBUG, "1.3 turnoff mpe----disable mpe to print,0xff for all" ); aos_printf( MPE_DEBUG, "1.4 memshow addr len" ); aos_printf( MPE_DEBUG, "1.5 memmod addr 1|2|4 value" ); aos_printf( MPE_DEBUG, "2.Layer3 message constructor" ); aos_printf( MPE_DEBUG, "3.Layer2 message constructor" ); aos_printf( MPE_DEBUG, "" ); aos_printf( MPE_DEBUG, "cmd 3 1 to show mps/mpe information" ); aos_printf( MPE_DEBUG, "cmd 3 2 to show time" ); aos_printf( MPE_DEBUG, "cmd 3 30 [0/1] to show all debug infomation,0--current,1--last time" ); aos_printf( MPE_DEBUG, "cmd 3 31 [0/1] to show exception ,0--current,1--last time" ); aos_printf( MPE_DEBUG, "cmd 3 32 [0/1] to show task switch ,0--current,1--last time" ); aos_printf( MPE_DEBUG, "cmd 3 33 [0/1] to show infinite loop ,0--current,1--last time" ); aos_printf( MPE_DEBUG, "cmd 3 34 [0/1] to show last message ,0--current,1--last time" ); aos_printf( MPE_DEBUG, "cmd 3 35 [0/1] to show assert information ,0--current,1--last time" ); aos_printf( MPE_DEBUG, "cmd 3 36 [0/1] to show run flow(last print),0--current,1--last time" ); aos_printf( MPE_DEBUG, "cmd 3 40 [0/1] tid count to show debug trace,0--current,1--last time" ); aos_printf( MPE_DEBUG, "cmd 3 41 [0/1] to disable or enable debug trace,0--disable,1--enable" ); aos_printf( MPE_DEBUG, "cmd 3 50 [0/1] to set serial work mode(0:com,1:bill)" ); aos_printf( MPE_DEBUG, "cmd 3 51 to show serial work mode(0:com,1:bill)" ); aos_printf( MPE_DEBUG, "cmd 3 60 [0/1] to disable or enable print log" ); aos_printf( MPE_DEBUG, "cmd 3 70 to check all dmem valid" ); aos_printf( MPE_DEBUG, "cmd 3 80 [0/1] to show/clear invalid packet num" ); aos_printf( MPE_DEBUG, "cmd 3 90 to os remain place" ); aos_printf( MPE_DEBUG, "cmd 3 91 to show g_ulTimerQueueFailCnt" ); aos_printf( MPE_DEBUG, "cmd 3 92 to clear g_ulTimerQueueFailCnt" ); aos_printf( MPE_DEBUG, "cmd 3 93 to show aos queue length" ); aos_printf( MPE_DEBUG, "cmd 3 94 to show g_ulShowFreeMem" ); aos_printf( MPE_DEBUG, "cmd 3 95 [0/1] to set g_ulShowFreeMem" ); aos_printf( MPE_DEBUG, "cmd 3 200 200 addr to erase flash block at addr" ); aos_printf( MPE_DEBUG, "cmd 3 201 addr size ip to upload memory at addr to tftp server ip" ); aos_printf( MPE_DEBUG, "" ); default: break; } subcmd=subcmd;}VOID debug_mem_show( MPE mpe, U32 start_addr, U32 len ){ S8 print_buf[1024],*s; U8 *addr; S32 i; U8 line_cnt,temp; addr = (U8*)start_addr; if( mpe >= MPE_BUTT ) { mpe = MPE_DEBUG; } if( AOS_SUCC != ssp_mpe_print_verify( mpe ) ) { return; } if( len == 0 ) { len = 1; } else if( len >= 256 ) { len = 256; } line_cnt = (U8)((len+15)>>4)-1; do { aos_sprintf(print_buf,"%08X: ",addr); s = &print_buf[aos_strlen(print_buf)]; for( i=0;i<16;i++ ) { if( i==7 ) { aos_sprintf(s,"%02X - ",*(addr++)); s += 5; } else { aos_sprintf(s,"%02X ",*(addr++)); s += 3; } } addr -= 16; for( i=0;i<16;i++ ) { temp = (U8)*(addr++); if( (temp < 32) || ( temp > 128 ) ) temp = 0x20; *(s++) = (S8)temp; } *s = 0; aos_printf( mpe, "%s", print_buf); }while( line_cnt-- );}VOID debug_mem_modify( U32 addr, U32 len, U32 value ){ S8 *s; if( sizeof(U8) == len ) { *(U8*)addr = (U8)value; s = "U8"; value = (U8)value; } else if( sizeof(U16) == len ) { *(U16*)addr = (U16)value; s = "U16"; value = (U16)value; } else if( sizeof(U32) == len ) { *(U32*)addr = (U32)value; s = "U32"; value = (U32)value; } else { aos_printf( MPE_DEBUG,"len maybe %d, %d, or %d",sizeof(U8), sizeof(U16), sizeof(U32) ); return; } aos_printf( MPE_DEBUG, "Debug:Modify %s at 0X%8X to %u", s, addr, value );}VOID debug_show_info(U32 argc, S8 *argv[ ] ){ S8 szBuf[128]; U32 ulIndex = 0; S32 len; aos_atol(argv[0], (S32*)&ulIndex); len = aos_snprintf( szBuf, 128, "\r\ndebug task id:%u,print mode:", print_task_id ); if( !debuger_connet_status ) { len += aos_snprintf( &szBuf[len], 128-len, "console" ); } else { if( debuger_connet_status & DEBUG_CONNECTED_REMOTE ) { len += aos_snprintf( &szBuf[len], 128-len, "remote+" ); } if( debuger_connet_status & DEBUG_CONNECTED_LOCAL ) { len += aos_snprintf( &szBuf[len], 128-len, "local+" ); } if( debuger_connet_status & DEBUG_CONNECTED_CLI ) { len += aos_snprintf( &szBuf[len], 128-len, "cli, index =%u\r\n", AOS_HTONL(debuger_ip_addr) ); } else { len += aos_snprintf( &szBuf[len], 128-len, "console\r\n" ); } } cli_out_string( ulIndex , szBuf );}#if( CONFIG_BOARD_GMPU == TRUE )#define NVRAM_ASSERT_MAGIC_NUM 0x55aa3947#define NVRAM_ASSERT_NUM 63#define NVRAM_ASSERT_BUF_LEN 128#if(CONFIG_OS_WINDOWS == TRUE )U32 nvram_copy(U32 desAddr, U32 srcAddr, U32 countByte){ memcpy( desAddr, srcAddr, countByte );}S8 nvram_buf[3*4+NVRAM_ASSERT_NUM*NVRAM_ASSERT_BUF_LEN];#define NVRAM_ASSERT_START_ADDR ((U32)&nvram_buf[0])#else#define NVRAM_ASSERT_START_ADDR NVRAM_ASSERT_ADDR extern U32 nvram_copy(U32 desAddr, U32 srcAddr, U32 countByte);#endifVOID nvram_assert( const S8 *format,... ){ S8 print_buf[NVRAM_ASSERT_BUF_LEN]; U32 head[3]; VA_LIST argptr; S32 offset; SYS_TIME_S now; S8 task_name[10];static U8 serialno = 0; aos_time_get(&now); aos_task_name(0, task_name); task_name[9] = 0; offset = aos_snprintf( (S8*)(print_buf), NVRAM_ASSERT_BUF_LEN, "[%03u-%04d:%02d:%02d ", serialno++, now.year, now.month, now.date ); offset += aos_snprintf( (S8*)(&print_buf[offset]), NVRAM_ASSERT_BUF_LEN, "%02d:%02d:%02d:%03d IN %s]", now.hour,now.minute,now.second,now.millisec,task_name ); VA_START( argptr, format ); offset +=aos_vsnprintf((S8*)(&print_buf[offset]), (U32)(NVRAM_ASSERT_BUF_LEN-offset), format, argptr ); VA_END( argptr ); nvram_copy( (U32)&head, NVRAM_ASSERT_START_ADDR, sizeof(head) ); if( NVRAM_ASSERT_MAGIC_NUM != head[0] ) { head[0] = NVRAM_ASSERT_MAGIC_NUM; head[1] = 0; head[2] = 0; } else if( NVRAM_ASSERT_NUM == head[1] ) { head[1] = 0; head[2] = 0; AOS_ASSERT(0); } nvram_copy( NVRAM_ASSERT_START_ADDR + sizeof(head) + head[1]*NVRAM_ASSERT_BUF_LEN,(U32)print_buf,NVRAM_ASSERT_BUF_LEN); head[2]++; head[1]++; if( NVRAM_ASSERT_NUM == head[1] ) { head[1] = 0; } nvram_copy( NVRAM_ASSERT_START_ADDR, (U32)&head, sizeof(head) );}#define NVRAM_ASSERT_CLI_OUT_WAIT( )\do{\ if( CLI_DISPLAY_STOP == cli_out_string_wait(ulIndex, szBuf, &ulCurLine) )\ {\ return;\ }\}while(0)VOID nvram_assert_show(U32 argc, S8 *argv[ ] ){ S8 szBuf[NVRAM_ASSERT_BUF_LEN+3]; U32 ulIndex = 0, ulCurLine=0; U32 head[3],i; aos_atol(argv[0], (S32*)&ulIndex); aos_sprintf(szBuf, "\r\nAssert in nvram:\r\n"); NVRAM_ASSERT_CLI_OUT_WAIT(); nvram_copy( (U32)&head, NVRAM_ASSERT_START_ADDR, sizeof(head) ); if( NVRAM_ASSERT_MAGIC_NUM != head[0] ) { head[0] = NVRAM_ASSERT_MAGIC_NUM; head[1] = 0; head[2] = 0; nvram_copy( NVRAM_ASSERT_START_ADDR, (U32)&head, sizeof(head) ); aos_sprintf(szBuf, "\r\nno record\r\n"); NVRAM_ASSERT_CLI_OUT_WAIT(); return; } if( 0 == head[2] ) { aos_sprintf(szBuf, "\r\nno record\r\n"); NVRAM_ASSERT_CLI_OUT_WAIT(); return; } if( head[1] >= NVRAM_ASSERT_NUM ) { head[1] = 0; head[2] = 0; nvram_copy( NVRAM_ASSERT_START_ADDR, (U32)&head, sizeof(head) ); aos_sprintf(szBuf, "\r\nrecords incorrect\r\n"); NVRAM_ASSERT_CLI_OUT_WAIT(); return; } if( head[2] >= NVRAM_ASSERT_NUM ) { for( i = head[1]; i < NVRAM_ASSERT_NUM; i++ ) { szBuf[0] = '\r'; szBuf[1] = '\n'; nvram_copy( (U32)&szBuf[2], NVRAM_ASSERT_START_ADDR + sizeof(head) + i*NVRAM_ASSERT_BUF_LEN, NVRAM_ASSERT_BUF_LEN ); szBuf[NVRAM_ASSERT_BUF_LEN+2] = 0; NVRAM_ASSERT_CLI_OUT_WAIT(); } } for( i = 0; i < head[1]; i++ ) { szBuf[0] = '\r'; szBuf[1] = '\n'; nvram_copy( (U32)&szBuf[2], NVRAM_ASSERT_START_ADDR + sizeof(head) + i*NVRAM_ASSERT_BUF_LEN, NVRAM_ASSERT_BUF_LEN ); szBuf[NVRAM_ASSERT_BUF_LEN+2] = 0; NVRAM_ASSERT_CLI_OUT_WAIT(); } aos_sprintf(szBuf, "\r\n\r\n"); NVRAM_ASSERT_CLI_OUT_WAIT();}#endif#endif #ifdef __cplusplus}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -