LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3035|回复: 9

linux下如何对看门狗(watchdog)编程!急!

[复制链接]
发表于 2004-12-22 15:19:40 | 显示全部楼层 |阅读模式
各位大虾:
     我最近移植一个DOS的程序到LINUX上!
    今天我移植到看门狗程序部分(watchdog),在LINUX下看门狗编程很简单,就是程序先向看门狗控制器地址写1(一般地址为0x0443),就是outportb(1,0x0443),这样就打开了看门狗记时器!
程序运行中要不断的向看门狗写1,否则看门狗就认为程序死机了,就重新启动系统!这就是我理解的看门狗工作原理!
    我按这个想法,在LINUX上编程! 首先我查看 cat /proc/ioport ,发现0x443已经有了看门钩定义! 从而系统已经包含了看门狗驱动程序了!所以我就把看门狗当作一个设备(/dev 中有一个设备名叫 /dev/watchdog)
   我编了测试程序片段,打算在程序开始打开/dev/watchdog,然后写1,然后执行一个死循环,
#incude ...
...
#include ...
int main()
{
   char buf[2] ={0,1}
   fd = open("/dev/watchdog".O_RDWR);
   write(fd,buf+1,1)
  while(1){}
}
预期的结果应该是 在死循环中,没有向0x0443写1,系统应该重新启动!结果系统却没有重新启动!

我的LINUX内核编译时候选择了支持看门狗(watchdog)选项!
   请大虾帮帮我,最好能给一点实例代码,现在很急! 万分感谢
 楼主| 发表于 2004-12-22 15:29:22 | 显示全部楼层

linux下如何对看门狗(watchdog)编程!急!

各位大虾:
我最近移植一个DOS的程序到LINUX上!
今天我移植到看门狗程序部分(watchdog),在LINUX下看门狗编程很简单,就是程序先向看门狗控制器地址写1(一般地址为0x0443),就是outportb(1,0x0443),这样就打开了看门狗记时器!
程序运行中要不断的向看门狗写1,否则看门狗就认为程序死机了,就重新启动系统!这就是我理解的看门狗工作原理!
我按这个想法,在LINUX上编程! 首先我查看 cat /proc/ioport ,发现0x443已经有了看门钩定义! 从而系统已经包含了看门狗驱动程序了!所以我就把看门狗当作一个设备(/dev 中有一个设备名叫 /dev/watchdog)
我编了测试程序片段,打算在程序开始打开/dev/watchdog,然后写1,然后执行一个死循环,
#incude ...
...
#include ...
int main()
{
char buf[2] ={0,1}
fd = open("/dev/watchdog".O_RDWR);
write(fd,buf+1,1)
while(1){}
}
预期的结果应该是 在死循环中,没有向0x0443写1,系统应该重新启动!结果系统却没有重新启动!

我的LINUX内核编译时候选择了支持看门狗(watchdog)选项!
请大虾帮帮我,最好能给一点实例代码,现在很急! 万分感谢
发表于 2004-12-22 16:18:54 | 显示全部楼层
fd = open("/dev/watchdog",O_RDWR|O_SYNC);


看看是不是同步的问题。
 楼主| 发表于 2004-12-22 18:21:56 | 显示全部楼层
感谢 大虾的关注,明天我到公司试看看!
  请问大虾以前遇到过这样的问题吗?
 楼主| 发表于 2004-12-23 09:53:22 | 显示全部楼层
我试过了,不行!
  程序运行完后出现提示:

  WDT closed unexpectly! WDT will not stop !
  
  请斑竹帮忙!
发表于 2004-12-23 11:27:12 | 显示全部楼层
我估计你不能把公司的代码贴出来,只能造你自己调试程序。
选找找这个提示信息是在什么地方产生的,用gdb跟踪下去看看。
 楼主| 发表于 2004-12-23 19:02:26 | 显示全部楼层
谢谢斑竹的关注!
  我是新手,不知道这个信息是从哪里产生出来的!请斑竹能指点一下,怎么查看!

   一个一个到文件中找太麻烦了!

   谢谢!
发表于 2004-12-24 09:28:43 | 显示全部楼层
这是linux的基本功了。没有必要在这里重复回答了。到基础版去搜索一下贴子。或者去shell版问问。保证你会大有收获的。
发表于 2004-12-26 23:53:16 | 显示全部楼层
你可以试试strace
发表于 2004-12-27 13:42:18 | 显示全部楼层

ff

Post by newhuman163
谢谢斑竹的关注!
  我是新手,不知道这个信息是从哪里产生出来的!请斑竹能指点一下,怎么查看!

   一个一个到文件中找太麻烦了!

   谢谢!

%grep " WDT closed unexpectly! WDT will not stop !"  *
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表