// ============================================================================= // 函数功能:看门狗模块的初始化 // 输入参数: // 输出参数: // 返回值 :1成功 0失败 // 说明 :创建看门狗硬件对应的软看门狗。注册看门狗异常信息解析器 // ============================================================================= ptu32_t ModuleInstall_Wdt(ptu32_t para) { bool_t result_bool; u16 evttid; g_ptWdtPool = M_Malloc(gc_u32CfgWdtLimit * sizeof(tagWdt),0); if(g_ptWdtPool == NULL) return 0; ptWdtPool = Mb_CreatePool(g_ptWdtPool,gc_u32CfgWdtLimit,sizeof(tagWdt),0,0,"wdt pool"); //init the queue ptWdtHead = NULL; ptWdtTail = NULL; ptWdtHard = NULL; //create the msg box for the api to snd msg to the wdt service task ptWdtMsgBox = MsgQ_Create(CN_WDTMSG_LIMIT,sizeof(tagWdtMsg),CN_MSGQ_TYPE_FIFO); //create the main service evttid = Djy_EvttRegist(EN_CORRELATIVE,CN_PRIO_WDT,0,0,Wdt_Service, NULL,0x1000,"wdt service"); if(evttid == CN_EVTT_ID_INVALID) return 0; if( Djy_EventPop(evttid,NULL,0,0,0,0) == CN_EVENT_ID_INVALID) { printk("WDT MODULE:POP SERVICE FAILED!\n\r"); Djy_EvttUnregist(evttid); return 0; } //create the soft wdt match the hard wdt struct tagWdtHalChipInfo hardpara; result_bool = WdtHal_GetChipPara(&hardpara); if(true == result_bool)//存在硬件看门狗,则创建硬件看门狗 { fnWdtHardFeed = hardpara.wdtchip_feed; ptWdtHard = Wdt_Create(hardpara.wdtchip_name,\ hardpara.wdtchip_cycle,\ __Wdt_HardWdtYipHook,\ EN_EXP_DEAL_IGNORE, NULL); } //todo:此处有警告 extern bool_t Exp_RegisterThrowinfoDecoder(fnExp_ThrowinfoDecoderModule decoder,const char *name); if(false ==Exp_RegisterThrowinfoDecoder(__Wdt_WdtExpInfoDecoder,\ CN_WDT_EXPDECODERNAME)) { printk("WDT MODULE: Register Wdt Exp Decoder Failed!\n\r"); } printk("WDT MODULE:Init end ...\n\r"); return 1; }
//----创建输入消息队列-------------------------------------------------------- //功能: 创建输入消息队列, 应用程序从队列中接收输入事件消息. //参数: MsgNum,消息队列中可容纳的输入消息数量 // Name, 输入消息队列的名字 //返回: 新创建的输入消息队列指针 //---------------------------------------------------------------------------- tpInputMsgQ Stddev_CreatInputMsgQ(u32 MsgNum,const char *Name) { return MsgQ_Create(MsgNum,sizeof(struct tagInputDeviceMsg),CN_MSGQ_TYPE_FIFO); }