免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6371 | 回复: 3
打印 上一主题 下一主题

linux下如何对看门狗(watchdog)编程!急! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-22 15:34 |只看该作者 |倒序浏览
--------------------------------------------------------------------------------

各位大虾:
我最近移植一个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)选项!
请大虾帮帮我,最好能给一点实例代码,现在很急! 万分感谢

论坛徽章:
0
2 [报告]
发表于 2004-12-22 22:15 |只看该作者

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

原帖由 "newhuman163" 发表:
}
程序运行中要不断的向看门狗写1,否则看门狗就认为程序死机了,就重新启动系统!这就是我理解的看门狗工作原理!
..........


首先,程序运行中不断向另一个进程写数据,平白无故占用了大量的系统资源。
其次,一个程序出了问题就重起系统,简直是在开玩笑!你要清楚linux是多用户、多任务操作系统,不是DOS!

论坛徽章:
0
3 [报告]
发表于 2004-12-22 23:00 |只看该作者

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

其实,还是有必要的
比如用一个DEAMEN维护一个AES加密,如果程式被远程中止并替换为有后门的进程,那么本该加密的数据就不再安全
这样就需要狗狗了。不过之间没有 sleep() 让我吃惊

再,偶对硬件狗狗不是很了解,为什么要选择IO操作而不是更有效的方式?

论坛徽章:
0
4 [报告]
发表于 2004-12-23 09:51 |只看该作者

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

首先感谢楼上两位的关注和独到的见解!
  
  不过我对LINUX处理WDT没有经验,还请大虾能给写建议!如何编写看门狗测试程序!
还有!
楼上说不对IO操作,更有效的办法是什么呢!是指软中断吗?
  我是新手,请不要见笑, 请大虾能一些具体的解决办法和思路!!
   
   万分感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP