S3C2440驱动简析——看门狗驱动

     本文假设各位看官已经了解看门狗的工作原理,而且手上有2440的datasheet,可以随时查看看门狗相关的寄存器。我在这里仅仅专注于对驱动程序的分析,望见谅~

 

 

借用网上的朋友☆&寒 烟☆的一幅描述看门狗驱动程序的结构框图,总结得还是相当到位的,这里妄自copy如下(如有冒犯原作者请立刻通知,立删并道歉),各位可以按照结构图来按图索骥,更好地掌握驱动程序里面稍稍复杂的关系。

 

看过结构框图,想必对程序的构成有一个大致的认识了。下面开始贴上代码并分析之

 

watchdog_init & watchdog_exit

上面两个函数分别是整个驱动的入口和出口,分别完成注册platform设备和注销platform设备的动作,其操作的platform设备由结构体s3c2410wdt_driver描述,代码如下

 

 结构体s3c2410wdt_driver

 对应文章一开始的框图,上述结构体绑定了5个函数和一些自身的信息。5个函数分别实现的功能如下。

 

s3c2410wdt_remove

 

s3c2410wdt_shutdown

 

s3c2410wdt_suspend

 

s3c2410wdt_resume

 

s3c2410wdt_probe

 

留意到,当注册wdt为杂项设备时,参数里的结构体s3c2410wdt_miscdev,代码如

哈哈,看到这个东东,应该很熟悉了吧,在之前的一些列驱动里都有接触过的结构体。其中我们关注.fops,它为我们提供了若干工具函数。

 

s3c2410wdt_open

 

s3c2410wdt_release

 

s3c2410wdt_write

 

 s3c2410wdt_ioctl

 

 

到这里为止,看门狗驱动函数已经全部介绍完毕,可能有朋友跟我一样,一开始会迷惑,到底看门狗算是什么设备吖。它究竟是平台设备(platform)、混杂设备(misc)、还是字符设备(char)呢。这里我摘录一段网友的解释,视点比较独特,深入浅出,摘录如下:

 

曾看到这样一段话,说一粒花生,如果我们把它看作字符设备,当我们煮着炖着吃了,它就成了菜中的一个混杂设备,但是了它总是从挂在花生秧的根部上的一员长来了,因此它是可以作为一个花生秧苗中一个独立的设备而存在,所以就也可以定义为一个平台设备。这说明什么呢?字符设备是对其本质的描述,说明是串行,顺序访问的(而不是缓冲随机的),混杂设备是存放这个字符设备的容器,即这个设备是被丢在使用了同一设备号的混杂设备里面,平台设备则是描述了设备的一种特性或者说属性。换句话说就是这个设备属于平台的独立模块,完全是一种附加的属性。

    

 个人水平有限,对于本文有不妥的地方敬请各位看官提出,以免误人子弟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值