linux嵌入式reboot不生效,软件看门狗程序中reboot()功能实现不了

软件看门狗程序中reboot()功能实现不了

[复制链接]

程序中的一块要实现软件看门狗功能,中间到reboot(0x00)并不能实现目标机重启,求高手指点~~~

313022e32646beaae19a939f0816a84e.gif

/*includes*/

#include "vxWorks.h"

#include "logLib.h"

#include "math.h"

#include "stdioLib.h"

#include "stdio.h"

#include "strLib.h"

#include "ioLib.h"

#include "taskLib.h"

#include "fioLib.h"

#include "ftpLib.h"

#include "ioLib.h"

#include "stdio.h"

#include "sysLib.h"

#include "symLib.h"

#include "symbol.h"

#include "unldLib.h"

#include "moduleLib.h"

#include "rebootLib.h"

/*function prototypes*/

void dogschdule();

void taskdog();

/*defines(these two better in header file)*/

#define MSEL 20/*20ms watch dog timer*/

int taskdogid;

long int wdcount=1;

void RedunSimDogCreate()

{

if((taskdogid=taskSpawn("tdog",100,0,5000,(FUNCPTR)taskdog,0,0,0,0,0,0,0,0,0,0))==ERROR)

{

perror("taskSpawn");

printf("taskSpawn dog failed\n");

}

/*timer*/

sysClkDisable();

sysClkRateSet(1000);/*1ms/tick*/

if(sysClkConnect((FUNCPTR)dogschdule,0)==OK)

{

printf("\nwatch dog timer starting\n");

sysClkEnable();

}

}

void dogschdule()

{

if(wdcount/(MSEL*1000)==1&&wdcount%(MSEL*1000)==0)/*20ms watchdog timer*/

{

taskResume(taskdogid);

printf("task resume is oktask resume is oktask resume is oktask resume is oktask resume is ok\n");

printf("wdcount++:%d\n",wdcount);

}

wdcount++; //logMsg("\r times=%f",wdcount,0,0,0,0,0);

}

void taskdog()

{

while(1)

{

taskSuspend(taskdogid);

printf("system reboot\n");

reboot(0x00);

}

}

[本帖最后由 h052315 于 2012-2-27 14:17 编辑]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值