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

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

3天内不再提示

介绍事务错误、链路流量控制相关的错误、异常的TLP以及内部错误

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

这篇文章主要介绍事务(Transaction)错误、链路流量控制(Link Flow Control)相关的错误、异常的TLP(Malformed TLP)以及内部错误(Internal Errors)等。

事务(Transaction )错误

事务错误主要包括不支持的请求(Unsupported Request)、Completer Abort、非预期的Completion和Completion超时。该错误类型主要通过返回的Completion TLP包头中的Compl. Status告知Requester,如下图所示。

不支持的请求(Unsupported Request)主要包括:

1. 请求类型不被当前PCIe设备支持

2. 消息中使用了不支持或者未定义的消息编码

3. 请求的地址空间超出(或者不在)设备的地址空间中

4. 针对Completer的IO或者存储映射控制空间(Memory-mapped Control Space)进行的Poisoned写操作(EP=1)

5. Root或者Switch的Downstream端口接收到针对其二级总线(Secondary Bus)上的不存在的设备的配置请求(Configuration Request)

6. Endpoint接收到Type1型的配置请求

7. Completion中使用了保留的Completion状态编码(参考上面的表格)

8. 设备(的某个功能,Function)处于D1、D2或者D3hot电源管理状态时,却接收到了除了配置请求和消息之外的内容

Completer Abort(CA)主要包括:

1. Completer接收的特殊请求,只有在违背其规则的情况下才能对该请求进行响应(返回Completion)

2. 因为某些恒定的错误状态(Permanent Error Condition),导致Completer无法响应接收到的请求

3. Completer接收到存在访问控制服务错误(Access Control Services Error,ACS Error)的请求

4. PCIe-to-PCI桥接收到针对其连接的PCI设备的请求,但是该PCI设备无法处理该请求

非预期的Completion主要包括:

1. Requester接收到的Completion和其发出的Request不一致

Completion超时:

所有的PCIe设备都必须支持Completion超时定时器,除非该设备只是用于初始化配置事务的。需要注意的是,PCIe设备必须能够针对多个事务(Transaction)分别计时。PCIe 1.x和2.0的Spec建议超时时间最好设置为10ms至50ms之间,对于一些特殊情况,超时时间最低可设置为30us。PCIe 2.1 Spec开始,增加了第二设备控制寄存器(Device Control Register 2)用于查看和控制超时时间的值。如下图所示:

如果,某个请求对应多个Completion,那么除了最后一个Completion,其他的Completion不会造成该请求的定时器停止计时。

链路流量控制(Link Flow Control)相关的错误

链路流量控制相关的错误主要有:

1. 在FC初始化时,链路相邻设备无法完成针对任何一个VC的,最小的FC Credits的交换更新(Advertises)

2. 链路相邻设备交换更新(Advertises)的FC Credits超过了最大值(Data Payload最大为2047,Header最大为127)

3. 链路相邻设备交换更新时,FC Credits为非零值,且该链路的FC Credits之前已经被初始化为无限值了

4. 接收端Buffer溢出,导致数据丢失(可选的,但是如果使能,则认为是Fatal Error)

关于Flow Control可以参考之前的文章:http://blog.chinaaet.com/justlxy/p/5100053464

和http://blog.chinaaet.com/justlxy/p/5100053465

异常的TLP(MalformedTLP)

异常的TLP(Malformed TLP)错误主要有:

1. Data Payload超过了最大值(Max Payload Size)

2. 数据长度(Data Length)与包头中的长度值不一致

3. 存储地址起始位置跨越了4KB边界(Naturally-aligned 4KB Boundary)

4. TD(TLP Digest)的值与ECRC是否使用不一致

5. 字节使能冲突(Byte Enable Violation)

6. 未定义的类型值(Type Field Values)

7. Completion违反了RCB(Read Completion Boundary)值

8. 针对非配置请求返回的Completion中的状态为配置请求重试状态(Configuration Request Retry Status)

9. TC域包含了一个未被分配到当前使能的VC的值(也被称为TC Filtering)

10. IO或者配置请求冲突(可选的)

11. 中断Emulation消息向下发送(可选的)

12. TLP前缀错误(具体请参考PCIe Spec V2.0的2.2~2.6相关章节)

内部错误(Internal Errors)

一般指的是Switch等桥设备内部产生的错误

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

    关注

    15

    文章

    1213

    浏览量

    82393
  • 配置
    +关注

    关注

    1

    文章

    187

    浏览量

    18347

原文标题:【博文连载】PCIe扫盲——PCIe错误源详解(二)

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

收藏 人收藏

    评论

    相关推荐

    TLP的数据链路层组成与操作

    Buffer保存的所有报文,当处于DL INIT状态时,向事务层发送DL DOWN状态信息  (2)、DL Init:物理层通知数据链路层当前PCIe可用,此时数据链路层需要首先初始化VC0的
    发表于 01-08 17:25

    导致致命异常错误和无效页错误的原因是什么?

    导致致命异常错误和无效页错误的原因是什么? 如果Microsoft Word或Excel“崩溃”,意味着在程序执行过程中出现了严重的错误。操作系统常常会发现存在一个严重问题,并
    发表于 08-05 10:33 1003次阅读

    《Visual C# 2005开发技术》处理异常错误

    《Visual C# 2005开发技术》处理异常错误
    发表于 02-07 15:17 0次下载

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

    PCIe总线错误检测囊括了(Link)上的错误以及包传递过程中的错误,如下图所示。用户设计的
    的头像 发表于 08-18 11:05 1.5w次阅读

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

    PCIe设备的配置空间中的状态与控制寄存器如上图所示,通过这些寄存器可以使能(或禁止)通过错误消息(Error Message)发送错误报告、查询错误状态信息,
    的头像 发表于 08-23 10:14 1.4w次阅读
    PCIe总线的三种<b class='flag-5'>错误</b>报告方式

    TAC配置错误引起用户流量计费异常案例

    TAC配置错误引起用户流量计费异常案例(场效应管接电源模块)-该文档为TAC配置错误引起用户流量计费异常
    发表于 07-26 12:01 8次下载
    TAC配置<b class='flag-5'>错误</b>引起用户<b class='flag-5'>流量</b>计费<b class='flag-5'>异常</b>案例

    Python中有哪些常见的错误异常

    python常见异常类型 在程序运行过程中,总会遇到各种各样的问题和错误。 有些错误是我们编写代码时自己造成的,比如语法错误、调用错误,甚至
    的头像 发表于 03-04 16:58 4120次阅读

    关于CAN总线错误相关知识

    在本系列文章中,我们将为您详细介绍CAN总线错误相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN
    的头像 发表于 05-27 17:56 3046次阅读

    CAN总线错误的类型介绍

    在本系列文章中,我们将为您详细介绍CAN总线错误相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN
    的头像 发表于 06-13 16:08 8113次阅读

    can总线的信号错误介绍

    错误帧用于在接收和发送消息时检测出错误通知错误的帧,它由错误标志和错误界定符构成。
    发表于 08-24 18:20 3049次阅读

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误相关知识,包括CAN总线
    的头像 发表于 06-09 09:46 2097次阅读
    虹科干货 | 带你全面认识“CAN总线<b class='flag-5'>错误</b>”(二)——CAN<b class='flag-5'>错误</b>类型

    虹科干货 | 带你全面认识“CAN总线错误”(一)——CAN总线错误错误

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误相关知识,包括CAN总线
    的头像 发表于 05-27 10:39 4517次阅读
    虹科干货 | 带你全面认识“CAN总线<b class='flag-5'>错误</b>”(一)——CAN总线<b class='flag-5'>错误</b>与<b class='flag-5'>错误</b>帧

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误相关知识,包括CAN总线
    的头像 发表于 06-02 09:41 1376次阅读
    虹科干货 | 带你全面认识“CAN总线<b class='flag-5'>错误</b>”(二)——CAN<b class='flag-5'>错误</b>类型

    虹科干货 | 带你全面了解“CAN总线错误”(四)——在实践中生成和记录CAN错误

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误相关知识,包括CAN总线
    的头像 发表于 06-09 10:21 1617次阅读
    虹科干货 | 带你全面了解“CAN总线<b class='flag-5'>错误</b>”(四)——在实践中生成和记录CAN<b class='flag-5'>错误</b>

    ug内部错误,内存访问违例怎么解决

    ug内部错误,内存访问违例怎么解决 内部错误和内存访问违例是编程中常见的问题,它们可能会导致应用程序崩溃、数据丢失或系统不稳定。在本文中,我将详细解释
    的头像 发表于 12-27 16:27 5866次阅读