Android深度探索--HAL与驱动开发----第八章读书笔记
一、Linux驱动的代码重用
1、编译是由多个文件组成的Linux驱动
重用=静态重用(将要重用的代码放到其他的文件的头文件中声明)+动态重用(使用另外一个Linux驱动中的资源,例如函数、变量、宏等)
2、Linux驱动模块的依赖
代码重用分为静态和动态两种。
二、强行卸载Linux驱动
情况1:初始化函数崩溃
情况2:卸载函数被阻塞
三、蜂鸣器(PWM)驱动
1、蜂鸣器驱动的原理
蜂鸣器也称PWM,基本原理是通过脉冲来控制蜂鸣器的打开和停止。
PWM使用端口F的CPFCON寄存器进行控制。改寄存器在linux内核中对应的宏是S3C64XX_GPFCON寄存器寄存器的虚拟地址。GPFCON只用了最高两位来控制PWM。当最高位为10时,打开PWM。当00时,停止PWM。
2、实现蜂鸣器驱动
编译PWM驱动的Makefile文件
obj-m :=pwm_driver.c
pwm_driver-objs :=pwm,o pwm_fun.o
3、测试蜂鸣器驱动
打开PWM
# ./ioctl /dev/pwm_dev 1 0
停止PWM
# ./ioctl /dev/pwm_dev 0 0