一、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、卸载函数
因篇幅问题不能全部显示,请点此查看更多更全内容