📄 ssp_except.c
字号:
#ifdef __cplusplusextern "C"{#endif#include "syscfg.h"#if( AOS_INCLUDE_SSP_KER_EXCEPTION == TRUE )#include "sys/sys_pub.h"#include "aos.h"#include "ssp_event.h"#include "ssp_task.h"#include "ssp_except.h"#if( CONFIG_BOARD_GMPU == TRUE )#include "db_pub.h"#endif#if (AOS_INCLUDE_SERVICE_SDFS_FTPS == TRUE)#include "files_pub.h"#endifEXCEPTION_BUF_S *g_pException = NULL;U32 g_ulSystemRestartTaskId;#if ( _CPU_ARM )extern VOID ssp_except_handle(U32 ulTask,U32 ulVecNum,ESF *pEsf);#elif ( _CPU_MIPS )extern VOID ssp_except_handle(U32 ulTask,U32 ulVecNum,ESFMIPS *pEsf);#elif( _CPU_PPC )extern VOID ssp_except_handle(U32 ulTask,U32 ulVecNum,ESFPPC *pEsf);#endifVOID system_restart_task();U32 m_except_init(){ g_ulSystemRestartTaskId = U32_BUTT; if(g_pException->m_ulInitFlag != EXCEPTION_INIT_FLAG) { aos_memzero((VOID *)g_pException,sizeof(EXCEPTION_BUF_S)); g_pException->m_ulInitFlag = EXCEPTION_INIT_FLAG; g_pException->m_ulIndex = EXCEPTION_RECORD_NUM - 1; g_pException->m_ulCounter = 0; } else { if(g_pException->m_ulCounter > EXCEPTION_RECORD_NUM) { if(g_pException->m_ulIndex >= EXCEPTION_RECORD_NUM) { g_pException->m_ulCounter = 0; g_pException->m_ulIndex = EXCEPTION_RECORD_NUM - 1; } } else if(g_pException->m_ulIndex >= g_pException->m_ulCounter) { g_pException->m_ulIndex = EXCEPTION_RECORD_NUM - 1; g_pException->m_ulCounter = 0; } }#if( CONFIG_OS_VXWORKS == TRUE ) excHookAdd((FUNCPTR)ssp_except_handle);#endif return AOS_SUCC;}U32 m_system_restart_task_init(){#if( CONFIG_BOARD_GMPU == TRUE || CONFIG_BOARD_EIA == TRUE ) return aos_task_create( "restart", 2000, TASK_PRIO_HIGHEST, AOS_TASK_NOPREEMPT, (VOID(*)(VOID*))system_restart_task, 0, &g_ulSystemRestartTaskId );#else return AOS_SUCC;#endif}VOID system_restart_task(){ U32 event,cnt; for(;;) { aos_event_wait( U32_BUTT, AOS_WAIT_ANY, 0, &event ); cnt = 0; for( ;; ) { if( flash_is_writing() ) { aos_task_delay( 500 ); continue; }#if( CONFIG_BOARD_GMPU == TRUE ) if( !db_can_reset() ) { db_backup_table_to_flash(); aos_task_delay( 500 ); continue; } #if (AOS_INCLUDE_SERVICE_BILL == TRUE) if( bill_pool_bill_num() ) { cnt++; if( cnt>= 100 ) { AOS_ASSERT(0); drv_cpu_reset(); break; } aos_task_delay( 500 ); continue; } #endif #if (AOS_INCLUDE_SERVICE_SDFS_FTPS == TRUE) if( !files_can_reset() ) { files_stop_service(); aos_task_delay( 500 ); continue; } #endif #endif drv_cpu_reset(); } }}#if( CONFIG_OS_VXWORKS == TRUE )#if ( _CPU_ARM )#include "ssp_except_arm.c"#elif ( _CPU_MIPS )#include "ssp_except_mips.c"#elif( _CPU_PPC )#include "ssp_except_ppc.c"#endif#endif#endif#ifdef __cplusplus}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -