分类: LINUX
2005-07-17 18:20:20
一 驱动程序执行方式
1.申请I/O端口
A 直接端口方式
check_region
request_region
B内存映射方式
check_mem_region
request_mem_retion
然后队端口地址映射
ioremap
2.注册驱动
register_chrdev 申请主设备号,注册驱动名,相关的操作.
3.探测中断
A 内核探测
B 定制探测
C 直接根据I/O地址,分配相应的IRQ号
4.安装中断相应处理函数
request_irq(irq,(*)Handler()...)
A 共享中断的处理函数
端口有中断到,则判断时不时本端口的中断.若是.则填充缓冲区.同时wake_up_interruptible,唤起等待序列.
在read操作中的队列由signal_pending唤醒,拷贝数据到用户空间.
B 下半部中断的处理函数
通过queue_task,执行队列处理函数唤起中断.
C 小任务中断处理函数
通过tasklet_schedule执行小任务处理函数唤起中断.
二 应用程序执行方式.