Linux设备驱动编程中的中断与定时器处理

   所谓中断是指CPU在执行过程中,出现某些突发时间急待处理,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。

  中断分为(根据中断源来分):  内部中断(软件中断指令,溢出,除法错误等)【例如操作系统从用户态切换到内核态需借助CPU内部的软件中断】。

                            外部中断(中断源来自CPU外部,由外设提出请求)。

  中断分为(根据是否可屏蔽):  可屏蔽中断   不可屏蔽中断

  中断分为 (根据中断入口跳转方法的不同): 向量中断:采用向量中断的CPU通常为不同的中断分配不同的中断号,不同中断号的中断有不同的入口地址。

                                     非向量中断:多个中断共享一个地址。 (由软件判断中断标志来识别具体是哪个中断)。

   非向量中断服务程序典型结构:

                           irq_handler()

                          {

                           ...

                           int int_src=read_int_status();        //读硬件的中断相关寄存器

                           switch(int_src)                       //判断中断源

                           {

                            case DEV_A:

                                      dev_a_handler();

                                      break;

 

                            

                            case DEV_B:

                                      dev_b_handler();

                                      break;

                            ...

                           default:

                                      break;

 

                           }

                     ...

              }

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Linux设备驱动编程中的中断与定时器处理,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。