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

PCIe總線的錯(cuò)誤報(bào)告機(jī)制中四個(gè)比較重要的概念
評論