设备驱动程序一般包括三部分
1自动配置和初始化子程序,负责检查要驱动的硬件是否存在 。
没设备还玩个啥,存在的话当然进行初始化啊, 不过初始化驱动程序只在初始化时被调用一次
2服务于I/O的请求的子程序
3中断服务程序
linux接收硬件的中断请求,再由系统调用调用中断服务子进程。 不是直接从中断向量表调用中断服务子程序。
没有异常事件,调中断会要命的。不信你试试
驱动程序初始化
1驱动程序管理的硬件进行必要的初始化------------就是对硬件的寄存器进行设置
2初始化设备驱动相关参数参数
3在内核注册设备
每一个驱动程序都有唯一的主设备号
设备号:主设备号+次设备号 主设备用来确定是哪一种设备 次设备 ---你猜 哦 就是这类的第几个
major+minor 12+20
MAJOR(dev_t dev) MINOR(dev_t dev)
MKDEV(int majir, int minor)
设备号可以自动获取or手动分配
自动获取可能每次都不一样,设备文件必须重新建立
手动分配 -------> /proc下的一堆数字
4注册中断
如果设备需要irq支持 就要注册中断
request_irq
5其他初始化工作