前面的文章提到過(guò),PCI總線中定義兩個(gè)邊帶信號(hào)(PERR#和SERR#)來(lái)處理總線錯(cuò)誤。其中PERR#主要對(duì)應(yīng)的是普通數(shù)據(jù)奇偶校檢錯(cuò)誤(Parity Error),而SERR#主要對(duì)應(yīng)的是系統(tǒng)錯(cuò)誤(System Error)。具體如下:
· 普通的數(shù)據(jù)奇偶校檢錯(cuò)誤——通過(guò)PERR#報(bào)告
· 在多任務(wù)事務(wù)(Multi-task Transaction,又稱為Special Cycles)時(shí)的奇偶校檢錯(cuò)誤——通過(guò)SERR#報(bào)告
· 地址和命令的奇偶校檢錯(cuò)誤——通過(guò)SERR#報(bào)告
· 其他錯(cuò)誤——通過(guò)SERR#報(bào)告
一個(gè)簡(jiǎn)單的例子如下圖所示:
PCIe作為一種高速串行總線,取消了PCI總線中的這兩個(gè)邊帶信號(hào),采用錯(cuò)誤消息的方式來(lái)實(shí)現(xiàn)錯(cuò)誤報(bào)告。但是,在軟件層面上,PCIe仍是兼容PCI總線的,具體后面會(huì)詳細(xì)描述。
在PCIe總線的錯(cuò)誤報(bào)告機(jī)制中,有如下四個(gè)比較重要的概念:
· 錯(cuò)誤檢測(cè)(Error Detection):指的是檢測(cè)某個(gè)錯(cuò)誤是否存在的過(guò)程。
· 錯(cuò)誤登記(Error Logging):指的是將相關(guān)寄存器(配置空間中的)的對(duì)應(yīng)為置位,以等待軟件中的相關(guān)錯(cuò)誤處理程序來(lái)處理該錯(cuò)誤。
· 錯(cuò)誤報(bào)告(Error Reporting):通知系統(tǒng)某個(gè)(或多個(gè))錯(cuò)誤發(fā)生了。在PCIe總線中,發(fā)生錯(cuò)誤的設(shè)備會(huì)通過(guò)錯(cuò)誤消息(Error Message)逐級(jí)將錯(cuò)誤信息發(fā)送至Root,Root接收到錯(cuò)誤消息后,會(huì)產(chǎn)生對(duì)應(yīng)的中斷通知系統(tǒng)。
· 錯(cuò)誤發(fā)送(Error Signaling):指的是通過(guò)發(fā)送錯(cuò)誤消息(或者帶有UR,CA的Completion和Poisoned TLP)來(lái)傳遞錯(cuò)誤信息的過(guò)程。
注:“帶有UR,CA的Completion”在前面的文章中介紹過(guò),不熟悉的可以回顧一下?!癙oisoned TLP”是PCIe總線錯(cuò)誤報(bào)告機(jī)制中的Error Forwarding的方式,具體會(huì)在后面詳細(xì)介紹。
PCIe總線Spec定義了兩個(gè)錯(cuò)誤報(bào)告等級(jí)。第一個(gè)為基本的(Baseline Capability),是所有PCIe設(shè)備都需要支持的功能。第二個(gè)是可選的,稱之為高級(jí)錯(cuò)誤報(bào)告(Advanced Error Reporting Capability)。
在基本的錯(cuò)誤報(bào)告機(jī)制中,有兩組相關(guān)的配置寄存器(配置空間中),分別為:
· 兼容PCI總線的寄存器(PCI-compatible Registers)
· PCIe總線中新增的寄存器(PCI Express Capability Registers)
高級(jí)錯(cuò)誤報(bào)告機(jī)制(AER)中,又使用了一組專用的配置寄存器(配置空間中)。借助AER可以獲得更多的錯(cuò)誤信息,有助于軟件定位錯(cuò)誤源和分析錯(cuò)誤原因。
PCIe總線的錯(cuò)誤可以分為(Correctable Errors)和不可校正錯(cuò)誤(Uncorrectable Errors)。其中,可校正錯(cuò)誤可以自動(dòng)地被硬件識(shí)別并被自動(dòng)的校正或恢復(fù)。而不可校正錯(cuò)誤又被分為非致命的(Non-Fatal)和致命的(Fatal)。非致命的錯(cuò)誤一般有設(shè)備驅(qū)動(dòng)軟件(Device Specific Software)直接處理,且鏈路(Link)可恢復(fù),甚至鏈路上的數(shù)據(jù)有可能得到恢復(fù)(不丟失數(shù)據(jù))。致命的錯(cuò)誤只能由系統(tǒng)軟件(System Software)處理,且一般需要進(jìn)行復(fù)位等操作,因此鏈路上的數(shù)據(jù)必然會(huì)丟失。
-
寄存器
+關(guān)注
關(guān)注
31文章
5439瀏覽量
124901 -
總線
+關(guān)注
關(guān)注
10文章
2962瀏覽量
89900 -
PCIe
+關(guān)注
關(guān)注
16文章
1350瀏覽量
85511
原文標(biāo)題:【博文連載】PCIe掃盲——PCIe錯(cuò)誤定義與分類
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
PCB設(shè)計(jì)中如何進(jìn)行統(tǒng)一批量檢測(cè)并生成錯(cuò)誤報(bào)告

CAN控制器總線錯(cuò)誤分析之CAN節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(cè)試

Win8系統(tǒng)操作不當(dāng)彈出錯(cuò)誤報(bào)告
仿真停止后怎樣關(guān)掉錯(cuò)誤報(bào)告?
關(guān)于Quartus II 錯(cuò)誤報(bào)告Error (171173): Node from partition Top cannot preserve previous placement at PIN_P8 and honor the location assigment to PIN_F8
MPLAB X IDE v3.20編譯器使用錯(cuò)誤的行號(hào)引用報(bào)告錯(cuò)誤
為什么我設(shè)計(jì)的TMS320VC5402板子在調(diào)試軟件時(shí)總會(huì)出現(xiàn)存儲(chǔ)器錯(cuò)誤報(bào)告?
當(dāng)PCIe配置為端點(diǎn)時(shí),如何啟用AER(高級(jí)錯(cuò)誤報(bào)告)驅(qū)動(dòng)程序?
基于軟件錯(cuò)誤報(bào)告數(shù)據(jù)集成的改進(jìn)貝葉斯算法
PCIe掃盲—PCIe錯(cuò)誤檢測(cè)機(jī)制的詳細(xì)資料概述
PCIe總線的三種錯(cuò)誤報(bào)告方式

PCIe錯(cuò)誤報(bào)告機(jī)制上高級(jí)錯(cuò)誤報(bào)告AER

Root如何處理來(lái)自其他PCIe設(shè)備的錯(cuò)誤消息

PCIe錯(cuò)誤報(bào)告的兩種機(jī)制詳解

評(píng)論