1.Input驱动
- 事件处理层(drivers/input/evdev.c、drivers/input/tsdev.c、drivers/input/joydev.c、drivers/input/mousedev.c等)
- 核心层(drivers/input/input.c)
- 硬件驱动层(drivers/input/keyboard/s3c2410ts.c、...)
2.LCD驱动
- FB通用层(drivers/video/fbmem.c)
- LCD控制器驱动层
3.I2C驱动
- i2c核心层:提供总线注册
- i2c设备通用层:实现文件操作
- i2c总线驱动层:i2c控制器配置
- i2c设备驱动层:实现
字符设备驱动编程流程
1.实现入口函数(模块加载函数)
1.1 注册register_chrdev(主设备号,设备驱动模块的名字,操作方法);
1.2 创建设备文件class_create() class_device_create();
1.3 申请空间或其他的某些初始化工作等等。
2.实现出口函数(模块卸载函数),在此函数做一些跟入口函数相反的事情;
3.实现file_operations结构体;
4.实现操作硬件的方法 xxx_open xxx_write xxx_read等等;
注:个人学习,不妥望指正,持续改善中。