八、蜂鸣器驱动--学习笔记

第八章、蜂鸣器驱动--学习笔记

蜂鸣器是 S3C6410 开发板上带的一个硬件设备。可以通过向寄存器写入特定的值来控制蜂鸣器 发出尖叫声。本节将介绍蜂鸣器实现原犁,并实现一个完整的蜂呜器驱动(可以打开和关闭蜂鸣器).PWM驱动的实现方式不同于LED驱动,PWM驱动将由多个文件组成。这也是大多数i n u x驱动的标准实现方式.也就是说--个复杂的驱动不太可能将所有的代码都放在…个文件中。最好将相关的代码放在相应的文件中。在编译L i n u x驱动时将这些文件进行联合编译。本节将介绍把Li n u x驱动分成多个文件的方式。这些文件中的数据结构、函数的代码也可以被多个不同的驱动使用,所以这也是代码重用的重要方法。

代码重用分为静态和动态。静态重用是使用某些功能时,include相应的头文件即可。动态重用就是一个Linux驱动可以使用另外一个Linux驱动中的资源。C或C++语言中编译多个源代码文件时,如果a.c使用了b.c文件中的函数,需要在a.c文件中使用extern预先定义b.c中德函数,extern的作用就是告诉编译器该函数的函数名、参数个数、参数类型和返回值类型。Extern只在编译阶段起作用。

 当linux驱动异常无法正常卸载时,即无法使用rmmod命令卸载Linux驱动。有如下几种情况:

1.初始化函数奔溃。

2.卸载函数被阻塞。

当遇到这种情况时可以重启机器解决,但是每次都重启比较麻烦,因此可以通过修改Linux驱动的相应内存地址删除Linux驱动。

 

posted @ 2016-06-05 08:44  漠云寒  阅读(128)  评论(0编辑  收藏  举报