码迷,mamicode.com
首页 > 其他好文 > 详细

Myriad2中断控制器

时间:2015-05-25 20:12:57      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

概要  

Myriad2中断控制器接收64个中断,根据他们的优先级来发送中断请求给LEON处理器.中断控制器仲裁根据级别和升序的中断号,同一优先级,更大中断号的中断优先级高. 64个中断,其中52个是硬连接中断,另外的12个可以配置的资源,来自LEON(RT或者是OS)中断设计模式(举例来说,OS中有一个中断,可以配置成来自RT,所以称之为inter-cpu interrupt).

功能集

  • 优先级
  • 电平或者边缘触发
  • CPU之间系统中断模式

中断架构

LEON处理器有16个优先级别,0 ~ 15. 更高级别的中断可以抢占使用CPU资源. 级别15是一个特殊的级别,它不会被其他中断抢占, 同样级别0表示没有中断.任何配置成0级别的中断不会产生任何中断.

每个中断可以配置成高低电平或者边缘. ICB(interrupt control block中断控制单元)会持续不断的观察这64个配置成电平或者边缘的中断源事件. 所有的中断事件的状态可以通过读中断状态(IntStatus)寄存器得到.

Both level and edge based events are latched by the Interrupt Controller.
Active Interrupt sources presented in the IntStatus register are then masked using the IntEnable and the
result is presented in the IntPending register.
All pending interrupt sources are compared and the highest configured level is presented to the LEON CPU
as an active interrupt level. Some time later the LEON CPU acknowledges the interrupt level. The interrupt
controller then accepts the acknowledge level and then determines which interrupt source at that level is
the highest priority.

基于电平或者边缘的中断触发事件均由终端控制锁村.

活动的中断源保存在中断状态寄存器中,当使用IntEnable 屏蔽当前中断,那么可以在intPending(就绪状态)寄存器中读取到该中断的状态值.

所有就绪的中断源会被比较看那个优先级最高,最高的哪个会被控制器呈递给LEON CPU,变成一个活动的中断级别.一段时间后LEON CPU会相应该中断级别.

中断控制器得到这个相应级别并且决定当前级别的中断哪一个优先级最高.

At the time of acknowledgement there may be interrupt sources with a higher priority present,
but only sources at the acknowledged level are considered. The interrupt controller automatically
clears the interrupt status bit of that source and indicates the source index in the IntSource register.
If the interrupt source is configured as a level interrupt and the level still exists then the interrupt
will retrigger automatically.

在相应中断的时候可能同时会有更过级别的中断信号过来,但是只有同一级别的中断源会被纳入仲裁范围.

中断控制器会自动清该中断的中断位,然后把该中断源的索引保存在intSource寄存器中.

如果该中断配置成电平中断并且该电平一直持续,该中断会自动从新触发.

When determining the cause of an Interrupt, software should only consider the state of the
IntSource register as the IntStatus and IntPending registers may already have been cleared by the Interrupt acknowledgment process

当决定中断来源时,虽然IntStatus 和 IntPending寄存器可能已经被中断处理函数清0,但是软件仍然只需要考虑IntSource寄存器的状态值. (我在说什么啊??)

如果LEON相应一个终端级别,但是该级别没有活动的中断源,或者没有中断配置成该级别.这种情况下,中断控制器需要把没有相应的中断级别值赋值给中断源寄存器,

在data sheet中是ICB_SRC, 默认值是0x7f, 表示上一次相应中断的级别.

下表是Leon OS的中断源列表

技术分享

可以看出52-63是来自Leon RT的中断源,也就是上面说的C2C 模式

下表是LeonRT的中断源列表

技术分享

软件代码中会为每个中断注册一个中断响应函数(handler), 当中断触发时系统软件会回调这个响应函数.

 

硬件会自动disable中断当系统导引到一个中断时,软件在重新使能中断前必须读取IRQ_SRC寄存器,决定中断源级别.

一旦中断重新使能了,新的中断变可以使用了,IRQ_SRC寄存器可以被重新改变.系统软件使用IRQ_SRC寄存器而不是IRQ_STATUSH或者是IPQ_PENDING来决定中孤单源.

用户软件同需要配置中断类型和中断级别. 中断类型可以配置成下面的边缘或者电平:

边缘中断:
 短暂有效性; 配置成上升沿或者下降沿
不需要要求软件清空中断

电平中断:

  • 一旦中断触发,会保持电平状态,直到相关的硬件模块动作执行,可以配置成高电平或者低电平

There is an important software difference in how edge and level based interrupts should be handled in User
level software.
Specifically, the user assigned software interrupt handler is responsible for performing the following
operations:
ico
Edge Interrupts:
1. Deal with the event signalled by the IRQ
Level Interrupts:
1. Deal with the event signalled by the IRQ
No further action is needed to clear the IRQ

 

Myriad2中断控制器

标签:

原文地址:http://www.cnblogs.com/biglucky/p/4528571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!