您的当前位置:首页正文

linux驱动watchdog看门狗

2020-10-15 来源:易榕旅网
linux—驱动--看门狗

一、S5PC100看门狗的实现原理

从上图中可以看出来,寄存器WTCON中可以控制第一级分频器,和第二级分频器的大小,

第一级分频

看门狗使能位

第二级分频

中断使能位

到时间了是否产生重启信号

以上是watchdog的配置寄存器。

从上面的原理图中可以看出来,要想要看门狗工作,必须有一个数据寄存器(WTDAT)和比较寄存器(WTCNT)

在watchdog初始化的时候,是WTDAT的值是不会被加载到WTCNT中去的。

二、源代码分析1、头文件

2、全局变量

cdev描述

的设备结构体

struct clk结构体是内核中描述时钟的结构体。3、open函数

在opne函数数中,完成对看门狗的设置,并启动看门狗。而在设置之前应该先关闭看门狗,最后在打开,并设置WTCNT和WTDAT的置。

4、release函数和ioctl函数

在release函数中,什么没有实现,而在ioctl函数中,我们要实现一个喂狗的操作,这样可以不让系统到时间了而产生复位。

5、init加载函数

1)申请设备号,注册设备

2)映射寄存器WTCON,WTDAT,WTCNT3)使能外设时钟4)创建class结构体

watchdog工作需要外部时钟,所以要先使能外部时钟。

/*arch/arm/mach-s5pc100/clock.c*/中有关于设备的时钟信息,也就是clk_get函数的参数watch的结构体的实现。

映射寄存器

使能外设时钟

创建class结构体

6、卸载函数

因篇幅问题不能全部显示,请点此查看更多更全内容