一.Linux驱动的代码重用
1. 编译是由多个文件组成的Linux驱动
模拟环境:/root/drivers/ch08/driver_shared/multi_file_driver
在multi_file_driver目录中有一个multi_file_driver_eclipse目录,该目录是eclipse工程目录。
main.c是Linux驱动的主程序。在fun.c和product.c product.h中定义和实现了在main .c中使用的函数。在main.c中通过extern关键字使用fun.c中的函数,通过包含product.c文件中的函数。
在main.c文件中会发现多了两个宏(_int和_exit),这两个宏分别用来标识Linux驱动初始化函数(main_init)和Linux驱动卸载函数(main_exit)。
最关键的一步是编写Makefile文件。
2.Linux驱动模块的依赖
模拟环境:/root/drivers/ch08/driver_shared/symbol_export
在symbol_export目录中有一个symbol_export_eclipse目录,该目录是eclipse工程目录。
symbol_producer驱动的两个函数(add和sub)和symbol_const常量及result变量被导出。
二.强行卸载Linux驱动
情况1:初始化函数崩溃
由于Linux驱动模块的初始化函数进行了某些操作而崩溃,从而导致初始化函数无法正常返回。
情况2.写在函数被阻塞
在使用rmmod命令卸载Linux驱动时,系统会调用卸载函数,只有写在函数成功返回时,Linux驱动才会被卸载。
三.蜂鸣器PWM驱动
1.蜂鸣器驱动原理
蜂鸣器也成为PWM,基本原理是通过脉冲来控制蜂鸣器的打开和停止。
2.实现蜂鸣器驱动
模拟环境:/root/drivers/ch08/pwm
PWM驱动由3个文件组成:pwm.c pwm_fun.h pwm_fun.c。其中pwm.c是驱动主程序。
3.测式蜂鸣器驱动