×
单片机 > 单片机程序设计 > 详情

ARM-Linux s3c2440 之中断分析(一)

发布时间:2020-06-20 发布时间:
|
硬件篇:

S3C2440 是arm920T架构,先温习一下s3c2440中的中断控制器原理和相关硬件构架。

 

中断控制器(InterruptControler):

 

S3c2440A的中断控制器有60个中断源,如DMA中断,UART中断,IIC中断等,60个中断源在寄存器中用相应的位来表示。当有多个中断要求到来时,经过仲裁过程后,中断控制器向CPU请求FIQ或者IRQ中断。仲裁过程根据硬件中的优先级模块来决定,其结果最后写进中断未决(intterrupt pending)寄存器中,通过中断未决寄存器的值可以清楚哪个中断发生了。

S3c2440中断控制器流程图:

挂起

中断模式(InterruptMode):

 

ARM920T(CPU)中有两类中断模式: FIQ中断和 IRQ中断,前者俗称快中断,后者称为普通中断。 所有中断源均可以指定采取何种中断模式。程序状态寄存器(PSR)有F和I标志位,当F 位 置 1 时,CPU不接受FIQ中断,同样,I位置1 时CPU不接受 IRQ中断。所以中断控制器需清零F位和I位,且将中断屏蔽寄存器(INTMSK)清零后,方可接收中断。

 

中断未决寄存器(InterruptPending Register)

 

S3C2440A有两个中断未决寄存器:中断源未决寄存器(SRCPND) 和中断未决寄存器(INTPND)。这两个寄存器指明了是否有中断未决(产生)。当中断源(一个或者多个同时发生)要求进行中断服务程序时,SRCPND寄存器中相应的位置 1, 同时自动地,在INTPND寄存器中只有 1 位被置1(因为从上图中可以看出INTPND是经过仲裁过程之后的,所以根据优先级决定最高优先级的中断被置1)。 如果INTMSK中相应的中断置 1,那么,SRCPND中相应位将被置1,而INTPND不会有变化。当INTPND置位时,无论何时,只要I 或标志位为0,那么即可执行中断服务程序。SRCPND 和 INTPND 寄存器可读可写,所以中断服务程序执行完后应当先写相应位的 1到SRCPND寄存器,然后写相应位的 1 到INTPND寄存器完成清零,以便CPU能响应下一次中断的发生。

 

中断屏蔽寄存器(InterruptMask Register)

 

中断屏蔽寄存器INTMSK用来指示中断是否并禁止(屏蔽)。如果相应位置1 标明该中断源被屏蔽,置0 则中断可以正常服务。如果某一中断MASK 为 1且中断发生,SRCPND中相应位会置1.

 

中断优先级模块(InterruptPrioprity Generating Block)

 

该模块可以服务32个中断要求,共由两级仲裁单元组成。第一级有6个arbiter0 ~ 5,第二级为arbiter 6, 每个arbiter里的中断的优先级采取轮换机制改变优先级。

 

每个仲裁arbiter处理6个中断要求,规则由优先寄存器(PRIORTY)中相应的ARB_MODE (1位)和ARB_SEL(2位)来决定。仲裁arbiter中REQ0总是最高优先级的,而REQ5总是最低的。所以只能在REQ1~REQ4中设定优先级:

ARB_SEL位为00b时,优先级:REQ0,REQ1,REQ2,REQ3,REQ4,REQ5

ARB_SEL位为01b时,优先级:REQ0,REQ2,REQ3,REQ4,REQ1,REQ5

ARB_SEL位为10b时,优先级:REQ0,REQ3,REQ4,REQ1,REQ2,REQ5

ARB_SEL位为11b时,优先级:REQ0,REQ4,REQ1,REQ2,REQ3,REQ3

所谓优先级采用轮换机制,举例说是,例如REQ1发生时,这时ARB_SEL自动变成01b,所以,之后的优先级将为:REQ0,REQ2,REQ3,REQ3,REQ1,REQ5,可见,当某一中断发生后(REQ1~REQ4),它的优先级将放到最低(在REQ5前),不断轮回,同理REQ2发生时,ARB_SEL自动变成10b,之后的优先级将为:REQ0,REQ3,REQ4,REQ1,REQ2,REQ5。但REQ0,或者REQ5发生时,ARB_SEL将维持不变。

以上是在相应地ARB_MODE为1的时候。当ARB_MODE被置0的时候,将按照默认的模式也就是上图中所示。

 

关于外部中断:

      s3c2440有24个GPIO输入触外部中断,可分为低电平触发,高电平触发,下降沿触发,上升沿触发,或者下降,上升时触发模式。

 

       通过以上,s3c2440的中断控制器原理,硬件构架分析完了。后面再来分析,ARM-Linux s3c2440之中断分析的软件实现原理。

关键字:ARM  Linux  s3c2440  中断分析 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项