Dan*_*Dan 13
一点点背景(您标记"ARM7",所以想必这问题不是在Cortex NVIC,等等.)
最初,ARM处理器支持两种类型的中断:正常中断(IRQ)和快速中断(FIQ).每个可能会中断CPU的外设都会触发IRQ或FIQ.IRQ有一个向量,FIQ有一个向量.
有时,从外设到IRQ/FIQ的映射是在硬件中完成的,有时它是可配置的.但问题是,只要你有> 2个外设中断,它们就必须共享一个中断向量.换句话说,如果您有3个中断源,则可以保证多个设备将使用至少一个IRQ或FIQ.这意味着当你接受中断时,你必须"轮询"(通常是硬件寄存器)来找出"为什么我在这里?谁打断了我?"
VIC的整个想法是每个中断都有自己独特的向量,因此当您向该中断槽移动时,您确切知道谁在打扰您.没有民意调查"好的,谁打断了我?"
在ARM站点上有关于ARM VIC(及其许多变体)的更多信息,包括配置信息,寄存器定义,嵌套/优先级中断等,但您的问题具体询问了VIC如何有效地处理中断.描述其特征的每个细节都超出了本问题的范围.
(我将"有效"解释为"尽可能少地进行轮询/询问".请注意,VIC支持的优先中断可以减少高优先级中断的延迟,这也可能被认为"更有效",尽管我不是真的把它放在同一类别,因为不必轮询"谁打断了我?")
有关Primecell VIC的更多信息,请访问ARM网站.
| 归档时间: |
|
| 查看次数: |
9269 次 |
| 最近记录: |