让开发板发出声音:蜂鸣器驱动
Linux驱动的代码重用
编译是由多个文件组成的linux驱动
Linux驱动模块的依赖
代码重用分为静态和动态两种。
共享内存的方式:模块依赖,也称为到处符号。
强行卸载Linux驱动
编写的Linux驱动程序在逻辑上是正确的,就可以正常装载和卸载,如果出现异常情况,就无法正常卸载Linux驱动,就需要强制卸载
情况1
初始化函数崩溃
情况2
卸载函数被阻塞
这两种情况都要获取表示卸载Linux驱动模块的module结构体指针,我们的解决方案是从/proc/kallsyms文件中查找系统分配给要卸载的Linux驱动的module结构体的首地址,然后将该首地址强行转换成module结构体指针。
由于module结构体的地址在内核空间,因此,只能编写Linux驱动(force_kill_driver)来卸载另一个Linux驱动,为了通用,用来卸载其他Linux驱动的Linux驱动需要接收一个模块参数。
蜂鸣器(pwm)驱动
蜂鸣器也称为脉冲宽度调剂(PWM),基本原理是通过脉冲来控制蜂鸣器的打开和停止。
实现一个完整的PWM驱动,通过I/O命令可以打开和停止PWM。
PWM驱动文件油3个文件组成:pwm.c pwm_fun.h、pwm_fun.c
浙公网安备 33010602011771号