通过学习Android深度探索(卷一)HAL与驱动开发的第八章让我知道了如何让开发板发出声音,如何编写蜂鸣器的驱动程序。了解了Linux驱动的代码重用,代码重用分为静态和动态两种。
Linux驱动的代码重用有很多方法,可以采用标准C程序的方式,将重要代码的代码放在其他的文件中,如果要使用某些功能,include相应的头文件即可,这种方式称为静态重用,另外一种动态重用方式就是一个Linux驱动可以使用另一个Linux驱动中的资源。
如果在模拟器或开发板上采用动态装载.ko文件的方式测试Linux驱动,就算无法正常Linux驱动,只要重新启动模拟器或开发版,动态Linux模块就会从内存之中卸载,但如果每次都重启计算机就很容易造成机器的崩溃,因此就需要一种方法来解决这种问题,使得无法通过rmmod命令卸载Linux驱动时,在不启动机器的情况下,仍然可以卸载Linux驱动。我们的解决方案就是从/proc/kallsyms文件中查找系统分配给要卸载的Linux驱动的module结构体的首地址,然后将首地址强行转换成module结构体指针。
蜂鸣器驱动的原理:蜂鸣器也称为PWM(脉冲宽度调制),基本原理是通过脉冲来控制蜂鸣器的打开和停止。