Android探索与驱动开发学与思(8)

蜂鸣器是 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.cproduct.h。其中main.cLinux驱动的主程序。在fun.cproduct.c中定义和实现了在main.c中使用的函数。在main.c中通过extern关键字使用fun.c中的函数,接下来学习了强行卸载linux驱动,只能卸载由于卸载异常情况而导致的linux驱动模块无法卸载的情况。

情况1:初始化函数崩溃

情况2:卸载函数被阻塞

蜂鸣器驱动是一个重点,通过相应的寄存器来控制蜂鸣器的打开和关闭,并且在实验蜂鸣器驱动时,将打开和关闭蜂蜜器的函数放到另外的C源代码文件中。PWM驱动由三个文件组成:PWM.CPWMfun.hpwm-fun.c、其中pwm.c是驱动主程序。

蜂鸣器驱动

原理:蜂鸣器也称为 PWM (脉冲宽度调制〉,基本原理是通过脉冲来控制蜂鸣器的打开和停止。

本章我学习到了:

1.Linux驱动常用的代码重用方式以及强行卸载liunx驱动的方法。

2.蜂鸣控制电路:靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率中断实验。

原文地址:https://www.cnblogs.com/wstone/p/5650993.html