蜂鸣器是 S3C6410 开发板上带的一个硬件设备。可以通过向寄存器写入特定的值来控制蜂鸣器 发出尖叫声。PWM驱动的实现方式不同于 LED 驱动, PWM 驱动将由多个文件组成。这也是大多数 Linux 驱动的标准实现方式. 也就是说-个复杂的驱动不太可能将所有的代码都放在一个文件中。
本节讲介绍把linux驱动分成多个文件的方式。这些文件中的数据结构、函数的代码也可以被多个不同的驱动使用,所以这也是代码重用 的重要方法。
Linux驱动代码重用:
编译是由多个文件组成的 Linu x 驱动
Linux 驱动模块的依赖(导出符号)
(1)代码重用分为静态和动态两种。
(2)在 Linux 驱动中可以使用如下两个宏导出函数。
(3)输入命令可以从/proc/kallsyms 文件中查看 symbol_producer 驱动导出的符号。(cat /proc/kallsyms I grep symbol_producer)
(4)depmod 和 modprobe 命令。
在Linux驱动的代码重用中,举个例子涉及的C语言源代码文件有main.c,fun.c,product.c和product.h。其中main.c是Linux驱动的主程序。在fun.c和product.c中定义和实现了在main.c中使用的函数。在main.c中通过extern关键字使用fun.c中的函数,接下来学习了强行卸载linux驱动,只能卸载由于卸载异常情况而导致的linux驱动模块无法卸载的情况。
情况1:初始化函数崩溃
情况2:卸载函数被阻塞
蜂鸣器驱动是一个重点,通过相应的寄存器来控制蜂鸣器的打开和关闭,并且在实验蜂鸣器驱动时,将打开和关闭蜂蜜器的函数放到另外的C源代码文件中。PWM驱动由三个文件组成:PWM.C、PWM—fun.h、pwm-fun.c、其中pwm.c是驱动主程序。
蜂鸣器驱动
原理:蜂鸣器也称为 PWM (脉冲宽度调制〉,基本原理是通过脉冲来控制蜂鸣器的打开和停止。
本章我学习到了:
1.Linux驱动常用的代码重用方式以及强行卸载liunx驱动的方法。
2.蜂鸣控制电路:靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率中断实验。