Watchdog驱动测试程序

原创 2013年12月03日 11:14:38

课堂实践2:

micro2440开发板上,watchdog的驱动已经编译进内核,参照教材PP290-291页的程序,编写watchdog驱动的测试程序。

看门狗驱动程序位于开发板内核源文件(仅供参考):
Linux-2.6.29/drivers/watchdog/s3c2410_wdt.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>	//UNIX标准函数定义
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>	//文件控制定义
#include <termios.h>	//PPSIX终端控制定义
#include <errno.h>	//错误号定义
#include <pthread.h>

int watchdogfd;

void* feeddogthread()
{
	int feeddogvalue;
	int returnval;
	
	feeddogvalue = 65535;
	
	while (1) {
		//每隔20秒,将重载看门狗计数寄存器的值
		printf("feed dog\n");
		returnval = write(watchdogfd, &feeddogvalue, sizeof(int));
		sleep(10);
	}
}

int main()
{
	pthread_t watchdogThd;
	//int watchdogfd;
	int returnval;
	char ch;
	
	//打开看门狗设备
	if ((watchdogfd = open("/dev/watchdog", O_RDWR|O_NONBLOCK)) < 0) {
		printf("cannot open the watchdog device\n");
		exit(0);
	}
	
	//创建喂狗线程
	returnval = pthread_create(&watchdogThd, NULL, feeddogthread, NULL);
	if (returnval < 0)
		printf("cannot create feeddog thread\n");
		
	while (1) {
		printf("If you want to quit, please press 'e' character!\n");
		ch = getchar();
		
		/* BUG
		if (ch == 'e') {
			printf("Close watchdog an exit safety!\n");
			close(watchdogfd);
			break;
		}
		*/
		
		if (ch == 'r') {
			printf("we don't close watchdog. The machine will reboot in a few seconds!\n");
			printf("wait......\n");
			break;
		}
	}
	
	return 0;
}

教材书使用的是2410的开发板,实验是用2440的开发板,因为2440的晶振比2410快了将近1倍,所以这边拿到2440上跑,喂狗线程函数,不能及时的喂狗,导致自动重启了。所以把线程函数里面的  sleep(20) 改成了sleep(10)即可。

主函数里面的  e  本来是想退出看门狗,测试没效果,还是会自动重启,所以就注释掉了。

相关文章推荐

imx6 WatchDog驱动程序及测试例程

/*  * Watchdog driver for IMX2 and later processors  *  *  Copyright (C) 2010 Wolfram Sang, Pengu...

V4L2 camera 驱动 capture测试程序

在网上找了一个测试程序, 看了看,是根据capture.c修改的。测试步骤如下 1. gcc -o capture_image capture_image.c 2. ctrl+alt+f1 切换到...
  • kickxxx
  • kickxxx
  • 2011年04月20日 16:07
  • 7781

linux下的spi驱动及测试程序移植开发

Linux2.6.32下SPI驱动的移植如下图所示: 下面需要修改部分内核代码,具体操作如下: 1. 修改arch/arm/mach-s3c2440/mach-mi...

v4l2虚拟驱动的应用测试程序讲解

简介   在前面我们已经完成了myvivi这个虚拟的v4l2摄像头驱动程序的编写。这里继续编写一个该驱动的应用测试程序来加深一下该驱动的工作原理。 具体代码 #include #inclu...

MINI2440开发板PWM驱动与测试程序简要分析

先看下电路原理图 #include #include #include #include #include #include #include #includ...

【Tiny6410 And Linux】—(6.2)—LCD 驱动测试程序(BMP 显示位图)——代码

刚才看个小视频,关于华山游客滞留的,哎,真是花钱买罪吃,下回一定得选好旅游地点!   少点废话,上一篇文章是关于 LCD 测试程序(BMP 显示位图)的基本原理的介绍,今天就发一下代码吧,由于中间...

S3c2440 I2C驱动与测试程序追踪交叉分析

注: 原创博文,转载请注明来自chenhui的博客. VMware虚拟机+Fedora10, 硬件平台TQ2440, 内核2.6.30.4 最近学习linux I2C驱动, 用刘洪涛老...

【Tiny6410 And Linux】—(6.1)—LCD 驱动测试程序——原理

总算要涉及到LCD的驱动程序了,不过之前还是先弄一下LCD的测试程序的好(这里看的是国嵌的代码)! 之前在电脑上找了很久的LCD的驱动程序,也就是xxxfb.c,但是真心看不懂究竟是哪个驱动,但是共...

【Tiny6410 And Linux】—(6.2)—LCD 驱动测试程序(BMP 显示位图)——原理

既然闲着也是没有事情做,干脆还是写点东西吧。   今天还是 LCD 驱动的一个测试程序,是为应用程序添加显示位图的功能,具体就是读取 BMP 图片,然后再开发板的屏幕上显示出来! 下面是有关 B...

DM8168 GPIO驱动与测试程序

本次测试针对GPIO1进行,挑选了GP1[31],引脚的复用默认的就是GPIO 还是老规矩,贴上driver.c,Makefile,test.c: dm8168_gpio.c: #include ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Watchdog驱动测试程序
举报原因:
原因补充:

(最多只允许输入30个字)