PCIe總線有三種錯(cuò)誤報(bào)告方式,分別是:
1. Completions:通過Completion中的狀態(tài)位向Request返回錯(cuò)誤信息
2. Poisoned Packet(又稱為錯(cuò)誤傳遞,Error Forwarding):告知接收端當(dāng)前TLP的Data Payload已經(jīng)被破壞
3. Error Message(錯(cuò)誤消息):向主機(jī)報(bào)告錯(cuò)誤信息
前兩種之前的文章都已經(jīng)提及,錯(cuò)誤消息的格式和對(duì)應(yīng)的消息編碼如下所示:
為了兼容PCI總線的錯(cuò)誤報(bào)告機(jī)制(使用PERR#和SERR#),PCIe設(shè)備會(huì)自動(dòng)將CA、UR和Poisoned TLP轉(zhuǎn)換為對(duì)應(yīng)的錯(cuò)誤信息。具體這里就不詳細(xì)介紹了,有興趣的可以自行閱讀PCIe Spec的相關(guān)章節(jié)。
PCIe設(shè)備的配置空間中的狀態(tài)與控制寄存器如上圖所示,通過這些寄存器可以使能(或禁止)通過錯(cuò)誤消息(Error Message)發(fā)送錯(cuò)誤報(bào)告、查詢錯(cuò)誤狀態(tài)信息,以及鏈路訓(xùn)練和初始化狀態(tài)等。
前面的文章介紹過,默認(rèn)的錯(cuò)誤分類如下表所示:
這些錯(cuò)誤類型可以通過設(shè)備控制寄存器(Device Control Register)中的相關(guān)位,進(jìn)行使能或者禁止:
也可以通過設(shè)備狀態(tài)寄存器(Device Status Registers)相關(guān)位查詢錯(cuò)誤狀態(tài):
當(dāng)然,當(dāng)Root接收到錯(cuò)誤消息后,怎么處理還要取決于Root Control Register的設(shè)置:
鏈路錯(cuò)誤(Link Errors)一般發(fā)生在物理層與數(shù)據(jù)鏈路層通信的過程中。對(duì)于Downstream的設(shè)備,如果鏈路上發(fā)生了Fatal錯(cuò)誤,此時(shí),該設(shè)備并不能夠向Root報(bào)告錯(cuò)誤。這種情況下,需要Upstream設(shè)備向Root來報(bào)告錯(cuò)誤。為了消除鏈路錯(cuò)誤,一般需要對(duì)鏈路進(jìn)行重新訓(xùn)練(Retrain)。如下圖所示,在鏈路控制寄存器中,可以通過往Retrain Link這一位寫1,來強(qiáng)制進(jìn)行鏈路重訓(xùn)練。
當(dāng)發(fā)起重訓(xùn)練請(qǐng)求后,軟件可以檢查鏈路狀態(tài)寄存器(Link Status Register)中的Link Training位,來確認(rèn)鏈路訓(xùn)練是否已經(jīng)完成,如下圖所示。當(dāng)該位為1時(shí),表明鏈路訓(xùn)練尚未完成(或者還沒有開始),如果鏈路訓(xùn)練已經(jīng)完成,硬件會(huì)自動(dòng)將該位清零。
PCIe總線的錯(cuò)誤登記與報(bào)告的流程圖如下圖所示:
-
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124466 -
總線
+關(guān)注
關(guān)注
10文章
2959瀏覽量
89750 -
PCIe
+關(guān)注
關(guān)注
16文章
1341瀏覽量
85136
原文標(biāo)題:【博文連載】PCIe掃盲——PCIe錯(cuò)誤報(bào)告機(jī)制
文章出處:【微信號(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)一批量檢測并生成錯(cuò)誤報(bào)告

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總線的錯(cuò)誤報(bào)告機(jī)制中四個(gè)比較重要的概念
PCIe掃盲—PCIe錯(cuò)誤檢測機(jī)制的詳細(xì)資料概述
PCIe錯(cuò)誤報(bào)告機(jī)制上高級(jí)錯(cuò)誤報(bào)告AER

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

PCIe總線的兩種復(fù)位方式
PCIe錯(cuò)誤報(bào)告的兩種機(jī)制詳解

評(píng)論