4、linux2.6.31---看门狗驱动的移植

 

1.看门狗驱动的移植

  《如果不移植看门狗驱动,则开发板根文件系统过15秒会后重启》 

1) 启动watchdog功能。编辑drivers/watchdog/s3c2410_wdt.c文件且修改#define CONFIG_S3C2410_WATCHDOG_ATBOOT          (1),系统默认为0。watchdog默认超时时间也可以设定,内核默认为15秒;设定为30秒,如下所示:

      49 #define CONFIG_S3C2410_WATCHDOG_ATBOOT           (1)

      50 #define CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME     (30)

2) 内核配置中添加对watchdog的支持Device Drivers->Watchdog Timer Support->S3C2410 Watchdog;

           Device Drivers->

                 [*]Watchdog Timer Support->

                       [*]S3C2410 Watchdog

    make zImage;生成内核镜像文件zImage.bin

 

3)编写用户态喂狗程序,否则开发板会在启动30秒后自动重启。喂狗程序核心就是通过ioctl系统调用向内核写入WDIOC_KEEPALIVE命令来保持watchdog有效,代码如下所示:

 #include<unistd.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<stdio.h>

#include<stdlib.h>

#include<errno.h>

#include<linux/watchdog.h>

 

int main(int argc,char **argv)

{

    int fd=0;

    int n=0;

    fd=open("/dev/watchdog",O_RDONLY);

    if(fd<0){

        perror("/dev/watchdog");

            return -1;

    }

    for(;;){

           ioctl(fd,WDIOC_KEEPALIVE);   //一直喂狗,不让开发板重启

           sleep(3);

    }

    close(fd);

    return 0;

}

 

对应的Makefile文件如下所示:

  CROSS = arm-linux-

  all: lwj_wdg

  lwj_wdg: lwj_wdg.c

           $(CROSS)gcc -o lwj_wdg lwj_wdg.c

           $(CROSS)strip lwj_wdg 

  clean:

           @rm -vf lwj_wdg *.o *~ 

 

4)在文件系统里实现喂狗操作

    编译出应用程序后,把它复制到文件系统的“/sbin/”目录下(权限必须为可执行),然后修改“/etc/init.d/rcS”文件,添加一行:lwj_wdg&

     重新制作根文件系统,并把内核镜像和根文件系统烧到开发板中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值