0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCI总线的中断信号与中断控制器的连接关系

SwM2_ChinaAET 来源:未知 作者:李倩 2018-04-11 09:12 次阅读

PCI总线使用INTA#、INTB#、INTC#和INTD#信号处理器发出中断请求。这些中断请求信号为低电平有效,并与处理器的中断控制器连接。在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号。所谓边带信号是指这些信号在PCI总线中是可选信号,而且只能在一个处理器系统的内部使用,并不能离开这个处理器环境。

注:PCI Spec对边带信号的定义如下:

Any signal not part of the PCI specification that connects two or more PCI-compliant agents and has meaning only to those agents.

完整的PCI信号结构图如下:

中断信号与中断控制器的连接关系

PCI总线规范没有规定PCI设备的INTx信号如何与中断控制器的IRQ_PINx#信号相连,这为系统软件的设计带来了一定的困难,为此系统软件使用中断路由表存放PCI设备的INTx信号与中断控制器的连接关系。在x86处理器系统中,BIOS可以提供这个中断路由表,而在PowerPC处理器中Firmware也可以提供这个中断路由表。

在一些简单的嵌入式处理器系统中,Firmware并没有提供中断路由表,此时系统软件开发者需要事先了解PCI设备的INTx信号与中断控制器的连接关系。此时外部设备与中断控制器的连接关系由硬件设计人员指定。

我们假设在一个处理器系统中,共有3个PCI插槽(分别为PCI插槽A、B和C),这些PCI插槽与中断控制器的IRQ_PINx引脚(分别为IRQW#、IRQX#、IRQY#和IRQZ#)可以按照下图所示的拓扑结构进行连接。

此时,PCI插槽A、B、C的INTA#、INTB#和INTC#信号将分散连接到中断控制器的IRQW#、IRQX#和IRQY#信号,而所有INTD#信号将共享一个IRQZ#信号。采用这种连接方式时,整个处理器系统使用的中断请求信号,其负载较为均衡。而且这种连接方式保证了每一个插槽的INTA#信号都与一根独立的IRQx#信号对应,从而提高了PCI插槽中断请求的效率。

在一个处理器系统中,多数PCI设备仅使用INTA#信号,很少使用INTB#和INTC#信号,而INTD#信号更是极少使用。在PCI总线中,PCI设备配置空间的Interrupt Pin寄存器记录该设备究竟使用哪个INTx信号。

中断信号与PCI总线的连接关系

在PCI总线中,INTx信号属于边带信号。PCI桥也不会处理这些边带信号。这给PCI设备将中断请求发向处理器带来了一些困难,特别是给挂接在PCI桥之下的PCI设备进行中断请求带来了一些麻烦。

在一些嵌入式处理器系统中,这个问题较易解决。因为嵌入式处理器系统很清楚在当前系统中存在多少个PCI设备,这些PCI设备使用了哪些中断资源。在多数嵌入式处理器系统中,PCI设备的数量小于中断控制器提供的外部中断请求引脚数,而且在嵌入式系统中,多数PCI设备仅使用INTA#信号提交中断请求。

在这类处理器系统中,可能并不含有PCI桥,因而PCI设备的中断请求信号与中断控制器的连接关系较易确定。而在这类处理器系统中,即便存在PCI桥,来自PCI桥之下的PCI设备的中断请求也较易处理。

在多数情况下,嵌入式处理器系统使用的PCI设备仅使用INTA#信号进行中断请求,所以只要将这些INTA#信号挂接到中断控制器的独立IRQ_PIN#引脚上即可。这样每一个PCI设备都可以独占一个单独的中断引脚。

而在x86处理器系统中,这个问题需要BIOS参与来解决。在x86处理器系统中,有许多PCI插槽,处理器系统并不知道在这些插槽上将要挂接哪些PCI设备,而且也并不知道这些PCI设备到底需不需要使用所有的INTx#信号线。因此x86处理器系统必须要对各种情况进行处理。

x86处理器系统还经常使用PCI桥进行PCI总线扩展,扩展出来的PCI总线还可能挂接一些PCI插槽,这些插槽上INTx#信号仍然需要处理。PCI桥规范并没有要求桥片传递其下PCI设备的中断请求。事实上多数PCI桥也没有为下游PCI总线提供中断引脚INTx#,管理其下游总线的PCI设备。但是PCI桥规范推荐使用下面的表建立下游PCI设备的INTx信号与上游PCI总线INTx信号之间的映射关系。

我们举例说明该表的含义。在PCI桥下游总线上的PCI设备,如果其设备号为0,那么这个设备的INTA#引脚将和PCI总线的INTA#引脚相连;如果其设备号为1,其INTA#引脚将和PCI总线的INTB#引脚相连;如果其设备号为2,其INTA#引脚将和PCI总线的INTC#引脚相连;如果其设备号为3,其INTA#引脚将和PCI总线的INTD#引脚相连。

在x86处理器系统中,由BIOS或者APCI表记录PCI总线的INTA~D#信号与中断控制器之间的映射关系,保存这个映射关系的数据结构也被称为中断路由表。大多数BIOS使用表中的映射关系,这也是绝大多数BIOS支持的方式。如果在一个x86处理器系统中,PCI桥下游总线的PCI设备使用的中断映射关系与此不同,那么系统软件程序员需要改动BIOS中的中断路由表。

BIOS初始化代码根据中断路由表中的信息,可以将PCI设备使用的中断向量号写入到该PCI设备配置空间的Interrupt Line register寄存器中。

PCI总线的错误处理

PCI设备可以通过奇偶校检来检测到来自AD上的地址或者数据的错误,并通过PERR#或者SERR#报告错误。但是需要注意的是,PCI Spec并未规定任何硬件层面上的错误处理或者恢复机制,因此,这些错误都只能通过软件进行处理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCI
    PCI
    +关注

    关注

    4

    文章

    608

    浏览量

    129573
  • 总线
    +关注

    关注

    10

    文章

    2695

    浏览量

    87156
  • 嵌入式处理器

    关注

    0

    文章

    246

    浏览量

    30401

原文标题:【博文连载】PCIe扫盲——PCI总线的中断和错误处理

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM的中断控制器

    、使能CPU处理接口上的中断信号。 2、CPU处理应答(ACK)对应中断。(ack由操作系统中断控制
    发表于 08-29 08:39

    浅谈PCI总线中断机制

    PCI总线中断机制PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理
    发表于 02-16 06:31

    AMBA 3 TrustZone中断控制器(SP890)技术概述

    TrustZone中断控制器(TZIC)是一款高级微控制器总线架构(AMBA)兼容的片上系统(SoC)外围设备,由ARM有限公司开发、测试和授权。 TZIC为TrustZone设计中的安全中断
    发表于 08-21 06:07

    PCI中断机制分析

    PCI中断机制分析:PCI 总线有四条中断线,所有PCI 设备共同使用这四条线向系统申请
    发表于 06-28 19:21 26次下载

    一种多核处理器中断控制器的设计

    一种多核处理器中断控制器的设计_张海金
    发表于 01-07 18:56 1次下载

    一个简单的PCI总线INTx中断实现流程

    一个简单的PCI总线INTx中断实现流程,如下图所示。 1. 首先,PCI设备通过INTx边带信号产生
    发表于 10-18 16:37 529次阅读

    华芯微特MCU的嵌套向量中断控制器与外部中断/事件控制器的使用方法

    01. 嵌套向量中断控制器(NVIC) NVIC的全称是Nested vectoredinterrupt controller,即嵌套向量中断控制器。 Cortex-M0和Cortex-M4提供
    的头像 发表于 06-04 12:08 3041次阅读
    华芯微特MCU的嵌套向量<b class='flag-5'>中断控制器</b>与外部<b class='flag-5'>中断</b>/事件<b class='flag-5'>控制器</b>的使用方法

    PCI总线如何与中断控制器信号相连?

    PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。
    的头像 发表于 06-21 16:10 1606次阅读

    简述PCI总线中断机制

    PCI总线中断机制 PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发
    的头像 发表于 07-18 10:10 2484次阅读

    中断控制器的驱动解析(上)

    这里主要分析 linux kernel 中 GIC v3 中断控制器的代码(drivers/irqchip/irq-gic-v3.c)。设备树先来看下一个中断控制器的设备树信息:gic:...
    发表于 12-04 16:36 10次下载
    <b class='flag-5'>中断控制器</b>的驱动解析(上)

    扒开 ARM 中断控制器的底裤

    GIC 硬件原理GIC,Generic Interrupt Controller。是ARM公司提供的一个通用的中断控制器。主要作用为:接受硬件中断信号,并经过一定处理后,分发给对应的CPU...
    发表于 12-04 17:36 6次下载
    扒开 ARM <b class='flag-5'>中断控制器</b>的底裤

    细说STM32的中断控制器(NVIC)那些事

    分组、中断优先级的配置、读中断请求标志、清除中断请求标志、使能中断、清除中断等,它控制着STM3
    发表于 01-14 15:54 6次下载
    细说STM32的<b class='flag-5'>中断控制器</b>(NVIC)那些事

    STM32外部中断控制器EXTI详解

    什么是外部中断控制器,外部中断控制器在STM32芯片中处于什么位置,它的作用是什么,EXTI与GPIO的映射关系
    的头像 发表于 04-20 11:44 1809次阅读
    STM32外部<b class='flag-5'>中断控制器</b>EXTI详解

    中断控制器级联的类型有哪几种

    中断控制器的级联 根据中断数量的不同,中断控制器可以级联,以此来满足需求。比如在 GIC 中断控制器之前都会连接 EINT
    的头像 发表于 09-28 14:15 365次阅读
    <b class='flag-5'>中断控制器</b>级联的类型有哪几种

    PLIC平台级中断控制器介绍

    平台级中断控制器(PLIC) PLIC:Platform-Level Interrupt Controller. 实际上,除了CLINT管理的软件中断和定时器中断,其他的中断都是由PL
    的头像 发表于 10-07 17:53 668次阅读
    PLIC平台级<b class='flag-5'>中断控制器</b>介绍