xueba

让开发板发出声音:蜂鸣器驱动

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.hpwm_fun.c

posted on 2016-07-07 20:32  xueba  阅读(117)  评论(0)    收藏  举报

导航