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

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

3天内不再提示

PCIe总线的三种错误报告方式

SwM2_ChinaAET 来源:未知 作者:李倩 2018-08-23 10:14 次阅读

PCIe总线有三种错误报告方式,分别是:

1. Completions:通过Completion中的状态位向Request返回错误信息

2. Poisoned Packet(又称为错误传递,Error Forwarding):告知接收端当前TLP的Data Payload已经被破坏

3. Error Message(错误消息):向主机报告错误信息

前两种之前的文章都已经提及,错误消息的格式和对应的消息编码如下所示:

为了兼容PCI总线的错误报告机制(使用PERR#和SERR#),PCIe设备会自动将CA、UR和Poisoned TLP转换为对应的错误信息。具体这里就不详细介绍了,有兴趣的可以自行阅读PCIe Spec的相关章节。

PCIe设备的配置空间中的状态与控制寄存器如上图所示,通过这些寄存器可以使能(或禁止)通过错误消息(Error Message)发送错误报告、查询错误状态信息,以及链路训练和初始化状态等。

前面的文章介绍过,默认的错误分类如下表所示:

这些错误类型可以通过设备控制寄存器(Device Control Register)中的相关位,进行使能或者禁止:

也可以通过设备状态寄存器(Device Status Registers)相关位查询错误状态:

当然,当Root接收到错误消息后,怎么处理还要取决于Root Control Register的设置:

链路错误(Link Errors)一般发生在物理层与数据链路层通信的过程中。对于Downstream的设备,如果链路上发生了Fatal错误,此时,该设备并不能够向Root报告错误。这种情况下,需要Upstream设备向Root来报告错误。为了消除链路错误,一般需要对链路进行重新训练(Retrain)。如下图所示,在链路控制寄存器中,可以通过往Retrain Link这一位写1,来强制进行链路重训练。

当发起重训练请求后,软件可以检查链路状态寄存器(Link Status Register)中的Link Training位,来确认链路训练是否已经完成,如下图所示。当该位为1时,表明链路训练尚未完成(或者还没有开始),如果链路训练已经完成,硬件会自动将该位清零。

PCIe总线的错误登记与报告的流程图如下图所示:

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

    关注

    30

    文章

    4421

    浏览量

    116082
  • 总线
    +关注

    关注

    10

    文章

    2414

    浏览量

    86490
  • PCIe
    +关注

    关注

    13

    文章

    891

    浏览量

    79835
收藏 人收藏

    评论

    相关推荐

    Win8系统操作不当弹出错误报告

    错误报告,频繁弹出提示窗口,非常麻烦,有什么方法可以将提示窗口关闭呢?系统 会弹出一个错误报告,它会将系统出现的一些问题生成文件报告发送至微软,以便让技术员
    发表于 06-24 14:35

    仿真停止后怎样关掉错误报告

    错误报告页面不弹出。每次仿真完之后都弹出烦死了
    发表于 06-23 00:29

    关于Quartus II 错误报告Error (171173): Node from partition Top cannot preserve previous placement at PIN_P8 and honor the location assigment to PIN_F8

    错误报告,编译不过。Error (171173): Node rs232_tx from partition Top cannot preserve
    发表于 11-04 21:13

    MPLAB X IDE v3.20编译器使用错误的行号引用报告错误

    错误报告错误的行中。例如,我在编辑器的第1439行出错,编译器将错误报告在第1741行。我在V3.15也有这个问题,但是当我使用旧的V892时没有。有什么线索吗?谢谢
    发表于 09-16 11:14

    为什么我设计的TMS320VC5402板子在调试软件时总会出现存储器错误报告

    错误报告,排除是映射的问题,是不是板子不稳定的因素?还是DSP工作不正常的问题?如何判别?
    发表于 09-17 05:33

    PCIe配置为端点时,如何启用AER(高级错误报告)驱动程序?

    PCIe 配置为端点时,如何启用 AER(高级错误报告)驱动程序。
    发表于 04-19 07:31

    基于软件错误报告数据集成的改进贝叶斯算法

    基于软件错误报告数据集的改进多项式朴素贝叶斯算法,同时在Hadoop平台下使用MapReduce计算模型实现该算法的分布式版本
    发表于 12-18 11:25 0次下载

    PCB设计中如何进行统一批量检测并生成错误报告

    错误报告。 Altium Designer的设计规则不是PCB对象的属性, 而是独立定义的。 每条规则需针对具体的PCB对象。对于PCB规则系统来说,它必须知道给定的规则应用于哪些对象,即规则的应用范围。可
    的头像 发表于 04-04 09:21 1w次阅读
    PCB设计中如何进行统一批量检测并生成<b>错误报告</b>

    PCIe总线错误报告机制中四个比较重要的概念

    错误报告(Error Reporting):通知系统某个(或多个)错误发生了。在PCIe总线中,发生错误的设备会通过错误消息(Error Message)逐级将错误信息发送至Root,Root接收到错误消息后,会产生对应的中断通知系统。
    的头像 发表于 08-17 10:09 5822次阅读

    PCIe扫盲—PCIe错误检测机制的详细资料概述

    PCIe总线错误检测囊括了链路(Link)上的错误以及包传递过程中的错误,如下图所示。用户设计的应用程序层中的错误不属于链路传输中的错误,不应当通过PCIe错误检测与处理机制处理,一般可借助设备特殊中断(Device Specifi
    的头像 发表于 08-18 11:05 1.4w次阅读

    PCIe错误报告机制上高级错误报告AER

    错误的根源。PCIe Spec V2.1还支持多个错误的追踪(Tracking Multiple Errors)。
    的头像 发表于 08-27 11:31 6484次阅读
    <b>PCIe</b><b>错误报告</b>机制上高级<b>错误报告</b>AER

    Root如何处理来自其他PCIe设备的错误消息

    错误屏蔽寄存器如下图所示,默认情况下,这些bit的值都是0。也就是说,只要发生相关错误,且该错误报告功能被使能,则相关错误便会被报告(不被屏蔽)。当然,软件可以通过将相关bit置1,来屏蔽相关的错误报告信息。
    的头像 发表于 08-28 09:44 3848次阅读
    Root如何处理来自其他<b>PCIe</b>设备的<b>错误</b>消息

    PCIe总线的两复位方式

    方式分为Cold、Warm和Hot Reset。PCIe设备可以根据当前的设备的运行状态选择合适的复位方式PCIe总线提供多种复位方式的主要原因是减小PCIe设备的复位延时。
    的头像 发表于 12-30 09:37 2.2w次阅读

    PCIe错误报告的两机制详解

    PCIe设备必需支持的一错误报告机制,同时设备会定义最小的错误报告请求。应该是通过配置Device Control和Command寄存器做到通知其他设备产生了错误的一机制。
    的头像 发表于 10-23 11:14 2w次阅读
    <b>PCIe</b><b>错误报告</b>的两<b>种</b>机制详解

    查看服务器连接错误报告的方法说明

    错误报告的方法
    发表于 01-07 11:04 792次阅读