标签:
第八章主要讲的实例是蜂鸣器驱动程序,蜂鸣器是S3C6410开发板上自带的一个硬件设备。
这一章讲了linux驱动的代码重用,代码重用分为静态重用和动态重用,将要重用的代码放在头文件中声明,这种是静态重用,linux驱动可以使用另一个linux驱动中的资源,这是动态重用。
还有一种代码共享的方式:模块依赖,也称为导出符号,就是在一个驱动模块里使用另一个驱动模块里的被导出的符号。
在某些情况下,linux驱动无法正常卸载,需要强行卸载,但是本章的方法不能强行卸载所有的linux驱动模块,只能卸载由于异常情况而导致的linux驱动模块无法卸载情况。比如:
初始化函数崩溃,这种情况的表现是当前linux驱动模块没有被任何其他的linux驱动模块使用,但却显示已经被引用了一次。解决方法把是当前的linux驱动模块的引用计数器清零即可。
卸载函数被阻塞,这种情况的表现是一执行rmmod命令就会停在那里不动,永远也不会返回到系统的操作提示符,这种情况的解决方法是将原来的卸载函数替换成一个空的卸载函数即可。
蜂鸣器的驱动原理是通过脉冲来控制蜂鸣器的打开和停止,蜂鸣器称为PWM。
标签:
原文地址:http://www.cnblogs.com/ywjboke/p/5555596.html