Linux开发十一_看门狗驱动
来源:互联网 发布:2017淘宝怎么删除差评 编辑:程序博客网 时间:2024/06/05 16:33
Linux开发十一
看门狗驱动
象棋小子 1048272975
看门狗的用途是当cpu进入到错误状态后,无法恢复的情况下,使系统重新启动。Linux内核已经支持s3c2416的看门狗驱动。
1. watchdog设备
watchdog设备包含了名字、独有的资源等等一些驱动程序的硬件或自定义信息。通过platform_add_devices(platform_device_register)函数将定义的平台设备注册到内核中,用于匹配设备驱动。
内核在drivers\watchdog\s3c2410_wdt.c中实现了s3c2416 watchdog驱动, watchdog设备的平台代码如下。
static struct resources3c_wdt_resource[] = {
[0]= DEFINE_RES_MEM(S3C_PA_WDT, SZ_1K),
[1]= DEFINE_RES_IRQ(IRQ_WDT),
};
struct platform_device s3c_device_wdt ={
.name = "s3c2410-wdt",
.id = -1,
.num_resources = ARRAY_SIZE(s3c_wdt_resource),
.resource = s3c_wdt_resource,
};
在static struct platform_device *home2416_devices[]板级平台设备列表中加入&s3c_device_wdt,使watchdog设备能够注册到内核中。
修改驱动文件s3c2410_wdt.c,使系统启动后使能看门狗,复位时间30秒。
#define CONFIG_S3C2410_WATCHDOG_ATBOOT (1)
#defineCONFIG_S3C2410_WATCHDOG_DEFAULT_TIME (30)
2. 内核配置
Linux配置支持watchdog设备驱动,选中DeviceDrivers->Watchdog Timer Support-> S3C2410 Watchdog。
3. 应用编程
cat/proc/devices可以知道watchdog的主设备号为252,次设备号为0,在/dev目录中创建watchdog设备文件。
mknod /dev/watchdog c 252 0
应用程序可以通过设备文件访问watchdog,watchdog应用测试代码watchdog_test.c如下。
#include "fcntl.h"
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <linux/watchdog.h>
int main(void)
{
intfd;
fd= open("/dev/watchdog", O_RDONLY);
if(fd == -1) {
printf("Openwatchdog failed\n");
exit(1);
}
while(1) {
ioctl(fd,WDIOC_KEEPALIVE);
sleep(7);
}
close(fd);
return0;
}
用arm-linux-gcc静态编译,使之生成arm cpu可执行的指令,并且可脱离任何库独立运行,arm-linux-gcc -static -o watchdog_test watchdog_test.c,生成watchdog_test可执行文件。复制可执行文件到根文件系统,启动后,执行./watchdog_test进行喂狗,可以杀死喂狗进程,确定看门狗可以重启系统。
4. 附录
https://pan.baidu.com/s/1slczwhJ
bootloader源码以及使用说明
https://pan.baidu.com/s/1eRDJtNs
Qt5.8官网源码
https://pan.baidu.com/s/1nuGmSqt
本系列例程的根文件系统
https://pan.baidu.com/s/1i5btLGT
opev3.2.0官网源码
https://pan.baidu.com/s/1pLpuHw3
yaffs官网源码
https://pan.baidu.com/s/1bpkZynt
busybox-1.26.2官网源码
https://pan.baidu.com/s/1i4EtjfR
tslib官网源码
https://pan.baidu.com/s/1i5MGRhb
mplayer-1.3.0官网源码
https://pan.baidu.com/s/1sl0fXlr
基于S3C2416修改的linux-4.10.10源码
- Linux开发十一_看门狗驱动
- 【Linux开发】linux设备驱动归纳总结(十一):写个简单的看门狗驱动
- linux驱动 看门狗
- linux驱动之看门狗
- linux设备驱动归纳总结(十一):简单的看门狗驱动
- linux设备驱动归纳总结(十一):简单的看门狗驱动
- linux设备驱动归纳总结(十一):写个简单的看门狗驱动
- linux设备驱动归纳总结(十一):简单的看门狗驱动
- linux设备驱动归纳总结(十一):简单的看门狗驱动
- linux设备驱动归纳总结(十一):写个简单的看门狗驱动
- linux设备驱动归纳总结(十一):简单的看门狗驱动
- linux设备驱动归纳总结(十一):简单的看门狗驱动
- (十一)1 简单的看门狗驱动
- linux at91看门狗驱动设置
- linux驱动之S3C2440看门狗驱动
- 看门狗(Watchdog)驱动开发实例讲解
- 开发学习记录之看门狗驱动
- (十一) 中断驱动开发
- Java设计模式
- ckplayer播放器的style.zip(干货)
- unicode 和 str(Python字符编码解码)
- 自定义电池UI
- 私活,永远解救不了自己屌丝的人生!
- Linux开发十一_看门狗驱动
- ImageButton 点击反馈
- django分页和消息队列
- Linux开发十二_i2c驱动
- python2.7 +matlabR2016b Python程序调用matlab程序
- SpringMVC学习(8):ModelAttribute
- kaggle 代码pipeline学习
- smb文件共享实现
- 高可用高并发的商品秒杀