pcie協議復位共有4中情況;cold reset;warm reset;hot reset;function level reset;
分類:
依據spec 6.6:
Conventional reset(傳統復位):cold,warm,hot, reset;所有pcie 內部的寄存器必須恢復到復位狀態;
按照復位方式:cold,warm,必須通過pcie復位信號#PERST信號復位;該信號通常接金手指上用于ep和rc鏈接;
in-band 復位:hot reset;function level reset(FLR);
Fundamental Reset:cold,warm reset;
當fundamental reset建立之后:RX為高阻態;TX輸出短路電流;TX端電壓為共模電壓;
復位釋放之后LTSSM從新開始訓練;
cold reset:
power up復位;
warm reset:
除power up之外其他情況控制了#PERST復位(如通過內部寄存器等);
兩者主要區別是復位保持時間的區別,以S IP為例在refclk穩定之后cold reset最小保持10us;而warm reset 保持時間為最小100ns;在CEM文檔中說明了Tpvperl必須最小100ms;
即圖中2處的時間;
hot reset:
TS1 order set中Hot reset bit為1;
一:有上層(app layer)控制發起hot reset:
- 如果任意lane中接收到兩個連續的TS1的order set;hot reset bit Assert;之后開始進入hot reset流程:(4.2.6.11 hot reset)
- linkup=0;
- 如果沒有繼續保持hot reset;之后Ltssm會進入到detect;
- 否則會繼續發送TS1系列,帶hot reset信息
2.所有tx lane中TS1 hot reset bit都為1;
3. 2ms后超時,自動回退到Detect狀態;
二:沒有上層控制(通常指接收側,如收到兩個連續的Ts1 hot reset bit被置位)
1.linkup=0;
2. 當SW 的USP任意lane 端口接收到兩個連續的TS1 hot reset assert;其所有下行端口都開始發送TS1 hot reset assert;
- 任意兩個crosslink不受該約束影響;
3. 當任意已配置lane收到兩個連續的TS1 hot reset bit assert;會進入到Hot reset狀態;且內部2ms計數器開始計數;
4.?2ms后超時,自動回退到Detect狀態;
注:在S IP中操作對端進入hot reset方法:
DSP可以hot reset USP;通過拉高app_init_rst 信號DSP會發送兩個連續的TS1 hot reset bit assert; 并且會輸出一個link_req_rst_not 信號用于指示復位信號(低有效);且該信號還會引起non_sticky_rst_n;以及int_phy_rst_n的復位;
帶axi端口的流程;需要將rx 數據flush;LTSSM會從L0狀態跳轉到Recovery之后進入到hot reset;
FLR reset:
flr reset不會復位:
1.sticky reg(非sticky reg會被復位)
2. HwInit 類型reg(硬件初始化reg)
FLR:非sr-iov可選;支持sr-iov必選;
使用方式:
DSP:無
USP:
device_capabilities_reg bit28為1,表示支持FLR;
device_control_device_status;bit15寫1開始進行usp的function level reset;寫1清0該bit。
注:有些內容是英譯過來的。建議去查看spec原文!!!!!!筆者寫的也只是為了記錄一下。