Linux看门狗驱动程序设计(三) 测试验证
测试驱动之前需要执行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看门狗驱动程序设计(三) 测试验证相关推荐
- linux内核看门狗关闭方法,详解linux 看门狗驱动编写
看门狗是linux驱动的一个重要环节.某些特殊的设备,有时候需要放在一些环境恶劣的地方,比如电信设备.但是,任何软件都不可能100%没有bug.如何保证软件在遇到严重bug.死机的时候也能正常运行呢, ...
- linux设备驱动归纳总结(十一):简单的看门狗驱动
http://blog.chinaunix.net/uid-25014876-id-112879.html 设备驱动的归纳已经差不多了,趁着知识点还没有遗忘,写点代码巩固一下,来个简单的看门狗驱动-- ...
- 基于嵌入式Linux的千兆以太网卡驱动程序设计及测试
基于嵌入式Linux的千兆以太网卡驱动程序设计及测试 一. 引言 千兆以太网是一种具有高带宽和高响应的新网络技术,相关协议遵循IEEE 802.3规范标准.采用和10M以太网相似的帧格式.网络协议和布 ...
- linux 多线程看门狗,X86平台的看门狗驱动,在内核中开线程喂狗
1.X86平台的看门狗驱动: 相关文件为:drivers/watchdog/iTCO_wdt.c 相关配置选项为: Device Drivers ---> [*] Watchdog Timer ...
- linux软件实现看门狗,一个软件实现的Linux看门狗—soft_wdt
soft_wdt(下面简称本软件)是一个软件实现的Linux看门狗. 本软件是一款开源.免费软件. 下载地址: 本软件和/drivers/watchdog/softdog.c实现的软件看门狗差点儿一样 ...
- 第一个驱动程序:at91sam9g45核心板的看门狗驱动
纪念第一个驱动程序:at91sam9g45核心板的看门狗驱动 看门狗的驱动一般来说比较简单,只要做寄存器的设置实现开启.关闭.喂狗功能.本项目中我们使用的是at91sam9g45处理器,带有看门狗定时 ...
- linux看门狗kill程序,看门狗在嵌入式 Linux 中的应用
By Toradex胡珊逢 1).简介 在嵌入式领域中 Watchdog 看门狗通常被作为用于应对系统或者应用意外崩溃的有效手段.其可以在程序执行出错并无法恢复的情况下,自动重启应用甚至复位整个系统, ...
- linux 块设备驱动 (三)块设备驱动开发
linux 块设备驱动 (三)块设备驱动开发 一: 块设备驱动注册与注销 块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为: int ...
- Linux USB设备驱动程序设计 和 USB下载线驱动设计
Linux USB设备驱动程序设计 和 USB下载线驱动设计 USB设备驱动模型 USB设备包括配置(configuration).接口(interface)和端点(endpoint),一个USB设备 ...
最新文章
- Xamarin XAML语言教程基本视图ContentView
- 上古时期的 TeX Users 都有哪些当今 TeX Users 无法想象的神级操作?
- redistemplate set方法_spring boot整合redis ---- RedisTemplate 三分钟快速入门
- JVM空间申请流程图
- SQL中truncate table和delete的区别 --转
- spring 构造函数注入_Spring构造函数注入和参数名称
- 快速卷积与快速相关——MATLAB
- 查看oracle 用户执行的sql语句历史记录
- apache tomcat php mysql 配置_Apache与Tomcat服务器整合的基本配置方法及概要说明
- python学习[一]
- AMPL-段阶段生产模型
- WPS入门StackPanel与Grid
- bing翻译API调用(java版本)
- 【解决方案修复谷歌翻译 Windows、macOS】谷歌翻译退出了中国市场不能用了
- rp软件app流程图_AxureRP介绍
- 支付宝支付提示 4006 ISV权限不足,建议在开发者中心检查签约是否已经生效
- Direct3D9初始化-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(6)
- mac 版本charles安装报错-Charles cannot configure your proxy settings while it is on a read-only volume.
- 护照阅读器助力港珠澳大桥拓展大湾区
- Rai StudiesQuick Start Site for JAVA Developers
热门文章
- Prompt 学习和微调综述 (Prompt Learning and Tuning)
- 永久免费内网穿透不限制速度
- 你不得不看的leetcode常见题(3月份每日一题)——Python
- 笔记|计算机数据表示实验(HUST)|偶校验解码电路设计
- 编写一个矩形rectangle 类,有数据成员长len 和宽wid,构造函数rectangle (int,int),和友元函数.
- java报错意外的类型_Java意外类型错误
- 编程界因为头发引起的战争(到底谁才是最优秀的编程语言?)
- Nodejs+Vue wzry项目 开发记录
- 国仁网络资讯:快手短视频运营中常见的10大疑难杂症;【建议收藏】
- 阿里云服务器配置微信公众号token验证失败解决办法