Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4275013
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: 嵌入式

2011-04-01 13:17:20

watchdog 移植
     参考资料:tq移植手册
               =1


1.修改 内核源码 “drivers/watchdog/s3c2410_wdt.c”
  1. //#define CONFIG_S3C2410_WATCHDOG_ATBOOT        (0)
  2. #define CONFIG_S3C2410_WATCHDOG_ATBOOT (1)      //  开启 看门狗
  3. #define CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME    (30)  //设置时间 30 s

2.make menuconfig 设置
  1. Device Driver->
  2.      [*]Watch Timer Support ->
  3.        <*> S3C2410 Watchdog

3.配置完毕后,编译出镜像,烧写到开发板中,启动开发板,过30s 的时间,开发板版会自动重启

4,编写喂狗 程序
  为了避免老是自动重启,我们需要编写一个看门狗的应用程序,并且在开机是自动启动该程序
ywx_wdg.c


  1. #include <unistd.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <errno.h>
  8. #include <linux/watchdog.h>

  9. int main(int argc,char **argv)
  10. {
  11.     int fd = 0;
  12.     int n =0;
  13.     fd = open("/dev/watchdog",O_RDONLY );

  14.     if(fd < 0) {
  15.         perror("/dev/watchdog");
  16.         return -1;
  17.     }
  18.     for(;;) {
  19.         ioctl(fd,WDIOC_KEEPALIVE);  ####一直喂狗,不让看门狗重启 CPU
  20.         sleep(3);
  21.     }
  22.     close(fd);
  23.     return 0;
  24. }

makefile 文件
  1. CROSS=arm-linux-

  2. all: ywx_wdg

  3. ywx_wdg:ywx_wdg.c
  4.     $(CROSS)gcc -o ywx_wdg ywx_wdg.c
  5.     $(CROSS)strip ywx_wdg
  6. clean:
  7.     @rm -vf ywx_wdg *.o *~


5.文件系统里面实现喂狗操作

  编译出 ywx_wtg 后,将他复制到 sbin/ 目录下面,注意 权限 chmod 777

  vim   /etc/init.d/rcS  添加
  1. ywx_wdg & #  启动看门狗喂狗程序

6.ok !
















阅读(822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~