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总线的错误登记与报告的流程图如下图所示:
悉见X1:这款AR眼镜在各方面的第一手体验
贸泽赞助的电动方程式赛车队全力备赛为期9天的柏林之战
继电保护的名词解释详解
三相异步电机绕组首尾端的判定方法
设备互联(IOT数据采集)平台有什么功能
PCIe总线的三种错误报告方式
森国科:小步快跑,助力芯片国产高端替代
OLED透明触摸屏有哪些应用优势
电力表采集的参数有哪些
新能源汽车再迎重大利好_新能源汽车行情进入全面加速阶段
Dialog投资Energous 加速无线充电普及
中国电信面对疫情发布了天翼云5G+云+AI战略
人工智能新应用“遍地开花”
小体积大能量浪涌TVS来了
将OMU和HPL解决方案与78M6610+LMU进行比较
四川移动发布:将采购华为P40和P40 PRO公开版手机63000台
LG为扩大公司在全球高端电视市场的影响力,将推出88英寸8K OLED电视
从CES 2013看汽车电子的未来:自动驾驶和无人驾驶
永磁式液态金属流量计的原理及设计
电磁兼容实验室都需要配置哪些仪器