Android深度探索笔记-第八章

遇到无法卸载Linux驱动时通过直接修改Linux驱动相应的内存地址删除Linux驱动。

书中介绍了2种驱动代码重用的方法,一种是:将要重用的代码放在其他的文件(在头文件中声明)中。如果要使用某些功能,include 相应的头文件即可(这种方式称为静态重用)。也可以使用另外一种动态重用的方式,也就是一个 Linux 驱动可以使用另外一个Linux驱动中的资源(函数、变量、宏等)。

_init,_exit这两个宏实际上是编译指令,如果用这两个宏标识main__init和main_exit函数,可以达到提高运行效率的目的。

extern的作用就是告诉编译器该函数的函数名、参数个数、参数类型和返回值类型。

如果 Linux: 驱动包含多个文件现 就;需要使用 moudule-y或module-objs)来指定所在的目标文件。

模块依赖:在一个驱动模块里使用另一个驱动模块里的被导出的符号(常章、变量、函数等)。

depmod命令用于分析Linux 模块之间的依赖性,这一功能在多个Linux模块之间拥有复杂的依赖关系方面非常有用。使用 depmod 分析完Linux模块的依赖关系后,就可以使用 modprobe 命令装载linux模块。modprobe 命令会根据depmod 命令生成的Linux模块依赖关系来装载Linux 模块,并不需要像使用 insmod 命令那样挨个装载 Linux 模块。

Linux 驱动模块无法卸载的情况:1:初始化函数崩溃2: 卸载函数被阻塞.

蜂鸣器的基本原理是通过脉冲来控制蜂鸣器的打开和停止。也可以通过调整占空比来控制音量大小。在驱动开发实验课上练习过蜂鸣器的各种使用方法。

 

posted @ 2016-07-08 16:02  焦岚  阅读(110)  评论(0编辑  收藏  举报