测试驱动之前需要执行make menuconfig,去掉内核自带看门狗驱动(位于Device Drivers -> Character devices -> Watchdog Timer Support),重新编译烧写内核。

将驱动编译为wdt_drv.ko文件,insmod加载驱动,如图所示,可以看到probe函数中的提示信息:

再编写一个简单的应用程序测试驱动功能,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, char *argv[])
{
int fd;
char c;
int i;

fd = open("/dev/watchdog", O_RDWR);
if(fd == -1) {
printf("no device\n");
exit(1);
}

c = argv[1][0];

for(i = 0; i < 15; i++) {
printf("%d\n", i);
sleep(1);
write(fd, &c, 1);
}

close(fd);
exit(0);

}

在应用程序的for循环中每隔1s输出一次计数,共15s, 并将程序命令行参数写入看门狗设备文件。看门狗定时器在驱动程序中设置为10s超时,如果命令行参数为1,将字符‘1’写入设备文件,驱动write函数执行喂狗操作,for循环15s系统不会重启,程序正常退出。如果命令行参数不为1,则不会执行喂狗操作,看门狗启动10s会重启整个系统,测试结果如图所示:

可以看到命令行参数为1,会执行喂狗操作,程序正常执行完毕退出,系统未重启;命令行参数为0,不执行喂狗操作,看门狗到达超时时间后,产生复位信号。

本实例只设计了一个简单的看门狗驱动,可以参考linux内核自带的看门狗驱动来进一步完善该驱动。

Linux看门狗驱动程序设计(三) 测试验证相关推荐

  1. linux内核看门狗关闭方法,详解linux 看门狗驱动编写

    看门狗是linux驱动的一个重要环节.某些特殊的设备,有时候需要放在一些环境恶劣的地方,比如电信设备.但是,任何软件都不可能100%没有bug.如何保证软件在遇到严重bug.死机的时候也能正常运行呢, ...

  2. linux设备驱动归纳总结(十一):简单的看门狗驱动

    http://blog.chinaunix.net/uid-25014876-id-112879.html 设备驱动的归纳已经差不多了,趁着知识点还没有遗忘,写点代码巩固一下,来个简单的看门狗驱动-- ...

  3. 基于嵌入式Linux的千兆以太网卡驱动程序设计及测试

    基于嵌入式Linux的千兆以太网卡驱动程序设计及测试 一. 引言 千兆以太网是一种具有高带宽和高响应的新网络技术,相关协议遵循IEEE 802.3规范标准.采用和10M以太网相似的帧格式.网络协议和布 ...

  4. linux 多线程看门狗,X86平台的看门狗驱动,在内核中开线程喂狗

    1.X86平台的看门狗驱动: 相关文件为:drivers/watchdog/iTCO_wdt.c 相关配置选项为: Device Drivers  ---> [*] Watchdog Timer ...

  5. linux软件实现看门狗,一个软件实现的Linux看门狗—soft_wdt

    soft_wdt(下面简称本软件)是一个软件实现的Linux看门狗. 本软件是一款开源.免费软件. 下载地址: 本软件和/drivers/watchdog/softdog.c实现的软件看门狗差点儿一样 ...

  6. 第一个驱动程序:at91sam9g45核心板的看门狗驱动

    纪念第一个驱动程序:at91sam9g45核心板的看门狗驱动 看门狗的驱动一般来说比较简单,只要做寄存器的设置实现开启.关闭.喂狗功能.本项目中我们使用的是at91sam9g45处理器,带有看门狗定时 ...

  7. linux看门狗kill程序,看门狗在嵌入式 Linux 中的应用

    By Toradex胡珊逢 1).简介 在嵌入式领域中 Watchdog 看门狗通常被作为用于应对系统或者应用意外崩溃的有效手段.其可以在程序执行出错并无法恢复的情况下,自动重启应用甚至复位整个系统, ...

  8. linux 块设备驱动 (三)块设备驱动开发

    linux 块设备驱动 (三)块设备驱动开发 一: 块设备驱动注册与注销 块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为: int ...

  9. Linux USB设备驱动程序设计 和 USB下载线驱动设计

    Linux USB设备驱动程序设计 和 USB下载线驱动设计 USB设备驱动模型 USB设备包括配置(configuration).接口(interface)和端点(endpoint),一个USB设备 ...

最新文章

  1. Xamarin XAML语言教程基本视图ContentView
  2. 上古时期的 TeX Users 都有哪些当今 TeX Users 无法想象的神级操作?
  3. redistemplate set方法_spring boot整合redis ---- RedisTemplate 三分钟快速入门
  4. JVM空间申请流程图
  5. SQL中truncate table和delete的区别 --转
  6. spring 构造函数注入_Spring构造函数注入和参数名称
  7. 快速卷积与快速相关——MATLAB
  8. 查看oracle 用户执行的sql语句历史记录
  9. apache tomcat php mysql 配置_Apache与Tomcat服务器整合的基本配置方法及概要说明
  10. python学习[一]
  11. AMPL-段阶段生产模型
  12. WPS入门StackPanel与Grid
  13. bing翻译API调用(java版本)
  14. 【解决方案修复谷歌翻译 Windows、macOS】谷歌翻译退出了中国市场不能用了
  15. rp软件app流程图_AxureRP介绍
  16. 支付宝支付提示 4006 ISV权限不足,建议在开发者中心检查签约是否已经生效
  17. Direct3D9初始化-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(6)
  18. mac 版本charles安装报错-Charles cannot configure your proxy settings while it is on a read-only volume.
  19. 护照阅读器助力港珠澳大桥拓展大湾区
  20. Rai StudiesQuick Start Site for JAVA Developers

热门文章

  1. Prompt 学习和微调综述 (Prompt Learning and Tuning)
  2. 永久免费内网穿透不限制速度
  3. 你不得不看的leetcode常见题(3月份每日一题)——Python
  4. 笔记|计算机数据表示实验(HUST)|偶校验解码电路设计
  5. 编写一个矩形rectangle 类,有数据成员长len 和宽wid,构造函数rectangle (int,int),和友元函数.
  6. java报错意外的类型_Java意外类型错误
  7. 编程界因为头发引起的战争(到底谁才是最优秀的编程语言?)
  8. Nodejs+Vue wzry项目 开发记录
  9. 国仁网络资讯:快手短视频运营中常见的10大疑难杂症;【建议收藏】
  10. 阿里云服务器配置微信公众号token验证失败解决办法