威尼斯wns.9778官网 > 计算机教程 > 第八章 让开发板发出声音:蜂鸣器驱动 心得笔

原标题:第八章 让开发板发出声音:蜂鸣器驱动 心得笔

浏览次数:95 时间:2019-12-28

第七章----pwm蜂鸣器,----pwm蜂鸣器

威尼斯wns.9778官网,Linux代码的重用:

在头文件中加载即可使用到原来所有的功能,还有动态方式就是一个驱动使用另一个驱动的资源。

对于像蜂鸣器这样的实验,它的内部文件有很多,所有要有很多的源代码以用于妥善管理。

有多个文件的话,module-y指定所有的文件,然后将会生成一个build.sh脚本,使用sh执行,使用dmesg查看日志信息。

代码重用分为静态和动态的。静态重用是生成.ko内核,动态重用是模块依赖,一个驱动使用另一个驱动模块里导出的符号。

重启开发板或者模拟器.ko文件就会自动消失。使用异常情况卸载:1.初始化函数卸载。2.卸载函数被阻塞

卸载一个驱动,需要输入一堆命令查询module结构体的首地址,安装和下载force_kill_driver驱动。

蜂鸣器的驱动实现原理与LED基本相同,但是实现方式不同,因为PWM是由多个文件组成的。

PWM基本原理是通过脉冲来控制蜂鸣器的打开和停止。GPFCON只用了最高的两位来控制PWM。

静态函数结构体,PWM设备文件open函数,使用信号量控制在同一时刻 只能打开PWM设备文件,然后close函数释放信号量,ioctl()函数处理I/O命令,设置文件设备file_operation设备,最后在最开始初始化信号量,移除信号量。在pwm.h文件PWM_IOTCL_START打开,PWM_IOTCL_STOP停止,这里在Linux底层驱动中有详解,生成.ko文件,编译成功。

测试蜂鸣器一般使用I/O命令的参数,可以正常发声。

http://www.bkjia.com/Linuxjc/1135728.htmlwww.bkjia.comtruehttp://www.bkjia.com/Linuxjc/1135728.htmlTechArticle第七章----pwm蜂鸣器,----pwm蜂鸣器 Linux代码的重用: 在头文件中加载即可使用到原来所有的功能,还有动态方式就是一个驱动使用另一个驱...

      蜂鸣器也称为PWM脉冲宽度调制,基本原理就是通过脉冲来控制蜂鸣器的打开和停止。蜂鸣器是开发板上带的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出的声音。本节介绍了蜂鸣器的实现原理,并实现一个完整的蜂鸣器驱动,可以打 开和关闭。PWM驱动的实现方式不同于LED驱动,PWM驱动由多个文件组成,这也是大多数Linux驱动的标准实现方式。

      Linux驱动的代码重用有很多种方法。分为静态重用和动态重用,静态重用是代码级的重用,就是将需要重用的代码和使用这些代码的文档放在一起编 译,最终生成一个可执行的文件或程序库(.ko和.so等)。代码共享就是在一个驱动模块里使用另一个驱动模块里被导出的符号(常量、变量、函数等)。

强行卸载Linux驱动

  情况1:初始化函数崩溃

  由于Linux驱动模块的初始化函数进行了某些操作而崩溃,从而导致初始化函数无法正常返回,这种情况变现是当前Linux驱动模块没用被任何其他的Linux驱动模块使用,但却显示已经被应用了一次

  这种情况关键是引用计数器的值和引用者不一致。只需要将当前的Linux驱动模块的引用计数器清零即可,修改计数器可以使用下面两个函数

    //是module指向的Linux驱动模块的引用计数器加1,成功返回1,失败返回0

    static inline int try_module_get(struct module *module);

    //是module指向的Linux驱动模块的引用计数器减1

    extern void module_put(struct module *module);

本文由威尼斯wns.9778官网发布于计算机教程,转载请注明出处:第八章 让开发板发出声音:蜂鸣器驱动 心得笔

关键词:

上一篇:python面向对象(一)

下一篇:没有了