精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PCIe系統復位方式

冬至子 ? 來源:存儲隨筆 ? 作者:古貓 ? 2023-06-05 17:30 ? 次閱讀

系統復位(Reset)

在PCIe Spec中,Reset總共分為兩類:Conventional Reset和Function Level Reset.

1. Conventional Reset

從字面上來講,Conventional Reset是傳統的Reset方式。這一類Reset功能是在PCIe Spec 2.0之前的Spec中定義的,所以稱為傳統的Reset。PCIe設備必須要支持這一類Reset。

Convential Resets包含了三種Resets: Cold Reset,Warm Reset 和 Hot Reset.

另外,還有一個概念: Cold Reset和Warm Reset又被稱為Fundamental Reset, Hot Reset被稱為Non-Fundamental Reset.

什么是Fundamental Reset呢?

這是PCIe最基本的復位方式,主要通過硬件實現,效果是重置整個設備,對每個狀態機、所有硬件邏輯、端口狀態和配置寄存器重新初始化。

但是,也會有例外的情況:在某些寄存器中的字段只有在全部電源(包括VCC電源和Vaux備用電源)切斷的情況下才會被重置。PCIe Spec給這些固執的字段起了個外號"Sticky Bits".

一般來說,Fundamental Reset是針對整個系統做Reset,但是有時也可以針對某個單一設備進行重置。

在這里說明一下Fundamental Reset中的Cold Reset和Warm Reset。

  • Cold Reset : 設備的主電源VCC上電時,就會觸發Cold Reset。
  • Warm Reset : 在VCC不斷電的情況下,系統可以觸發Warm Reset。比如,電源狀態的變化就會觸發Warm Reset. 不過,PCIe Spec并沒有定義觸發Warm Reset的具體方式,這部分可以有系統設計人員自行決定。

另外,在PCIe Spec中,規定了兩種觸發Fundamental Reset方式。

  • 一是通過PERST#(PCIe Reset)信號控制。
  • 二是在沒喲PERST#信號的情況下,通過Power on/off的方式實現。

舉個例子,看看PERST#是如何生成的。

  1. 系統上電穩定后,有POWERGOOD信號產生(下圖紅色框所示)。
  2. 當系統的南橋芯片(也就是圖中的IO控制器ICH)收到POWERGOOD信號后,就會產生PERST#信號(下圖綠色部分),此時會引起Cold Reset。
  3. 如果系統可以通過非上電的方式觸發PERST#信號,此時會引起Warm Reset。

圖片

明白了Fundamental Reset,那Non-Fundamental Reset中的Hot Reset又是什么呢?

與Fundatmental Reset相反,Hot Reset是一種軟件控制的復位方式。PCIe設備出現錯誤時,通常情況下用軟件的方式對設備重置。軟件可以通過在Bridge control中設置Secondary Bus Reset bit來觸發Hot Reset.

圖片

另外,在PCIe總線中,通過發送TS1序列,并且在TS1序列中設置Hot Reset bit來對下游設備進行Hot Reset(如下圖紅色框).

在這個過程中,發送端會持續發送TS1序列至2ms, 接收端在接到2個連續的TS1序列之后進行Hot Reset.

圖片

同樣,舉個例子說明一下Hot Reset:

  1. 系統通過軟件對Switch A左邊端口的Secondary Bus Reset bit置為1(下圖紅色框),觸發了Hot Reset.
  2. 之后通過發送TS1序列對PCIe鏈路中的下游設備觸發Hot Reset(下圖黑色箭頭).

圖片

2. Function Level Reset

在傳統復位方式的基礎上,PCIe Sepc 2.0以后開始增加了新的復位方式FLR(Function Level Reset)。前面講到的傳統復位方式(Cold Reset, Warm Reset, Hot Reset)均屬于全局復位方式,而FLR的優勢則是對局部復位。

在PCIe協議中,一個PCIe設備可能包含多個功能模塊(Function),每個功能模塊相互對立,共用一個PCIe link。其中,某個功能模塊出問題時,雖然可以采用傳統復位方式對整個PCIe設備復位,但這個顯然不友好,因為其他功能模塊可能正在埋頭苦干。這就好比如,在一個團體中,一個人犯錯了,要團隊所有人一起承擔,這個肯定會影響團結呀。

所以,PCIe深得管理學的精髓,為了不影響團結,FLR允許只對其中出錯的功能模塊(Function)進行重置,其他功能模塊正常工作。

不過,FLR復位方式對PCIe設備并不是必須的,在對PCIe設備使用FLR復位之前必須先檢查是否支持FLR。這部分可以查看Device Capabilities Register是否將Funcion-Level Reset Capability bit置起。

圖片

如果PCIe設備支持FLR,那么就可以通過設置Device Control Register中的Function-Level Reset bit觸發FLR復位咯~

圖片

觸發FLR之后,PCIe鏈路中都有哪些變化呢?

我們前面提到了,FLR是一個局部復位方式,只對出問題的那個Function起作用。所以說, FLR只會改變當下Function內部的狀態和寄存器的內容 。以下幾個方面不會被影響:

  • 執行FLR的Function所在的PCIe鏈路狀態不會改變,因為其他Function也在共用整條PCIe鏈路;
  • Sticky Bits . 傳統復位方式也無法改變Sticky bits, 除非完全斷電。
  • HwInit Bits . HwInit bits是硬件初始化的內容,這些值由芯片的配置引腳決定,后者上電復位后從EEPROM中獲取。Cold和Warm Reset可以復位這些寄存器,然后從EEPROM中從新獲取數據,但是使用FLR方式不能復位這些寄存器。
  • 與Link相關的寄存器 。比如ASPM,Flow control等相應的寄存器。

另外,PCIe Sepc規定,某個Function的FLR必須在100ms之后完成。所以,PCIe Spec寫了一封倡議書給要使用FLR復位方式的"人們"-軟件:

為了創造一個溫馨的FLR工作環境,請做到以下幾點:

  • 在FLR工作期間,請不要訪問對應的Function;
  • 清除所有的Command Register;
  • 通過Polling Device Status Register中的Transaction Pending bit來確保之前請求的Compeletion報文已完成,或者確保后續不會再發送Compeletion報文。
  • 觸發FLR之后,請耐心等待至少100ms;
  • 初始化Function的配置寄存器,讓其正常工作。

在FLR執行的過程中,如果收到TLP或者Compeletions都會被默默的丟棄,而不會向系統報錯。

舉個栗子,看看FLR執行過程,

  1. 如下圖,這個PCIe設備中有兩個功能模塊:Function 0和Function 5. 此時,兩個Functions依舊是互不干擾,認真工作,傳輸TLPs.

圖片

  1. 之后,Function 5出了一些問題,需要做FLR。FLR之后,Function5中的之前的TLPs全部被清除。

圖片

  1. Function 5做FLR,并不影響Function 0,繼續TLPs傳輸。如下圖,3個TLPs正常傳輸完畢。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16212

    瀏覽量

    177446
  • EEPROM
    +關注

    關注

    9

    文章

    1010

    瀏覽量

    81413
  • TLP
    TLP
    +關注

    關注

    0

    文章

    32

    瀏覽量

    15605
  • Vcc
    Vcc
    +關注

    關注

    2

    文章

    305

    瀏覽量

    35860
  • PCIe接口
    +關注

    關注

    0

    文章

    120

    瀏覽量

    9679
收藏 人收藏

    評論

    相關推薦

    簡談PCIe的軟件配置方式

    大家好,又到了每日學習的時間了,今天我們來聊一聊PCIe的軟件配置方式。 關于PCIe的軟件配置和初始化 PCIe設計出來考慮了和pci兼容問題。所以
    的頭像 發表于 07-29 09:26 ?7719次閱讀
    簡談<b class='flag-5'>PCIe</b>的軟件配置<b class='flag-5'>方式</b>

    Cortex-M內核的軟件復位方式

    這里只討論內核的軟件復位方式。像STM32的備份域復位里面也有軟件復位,則不在本文討論范圍。額外提一句,上電復位是完整
    的頭像 發表于 12-06 16:18 ?2122次閱讀
    Cortex-M內核的軟件<b class='flag-5'>復位</b><b class='flag-5'>方式</b>

    Linux操作系統中如何按下PCIe復位

    在Linux操作系統中,看如何按下PCIe復位
    的頭像 發表于 01-20 09:31 ?1459次閱讀
    Linux操作<b class='flag-5'>系統</b>中如何按下<b class='flag-5'>PCIe</b>的<b class='flag-5'>復位</b>鍵

    PCIe插槽竟然能玩出花樣?多個最新PCIe擴展硬盤方式!#PCIe擴展 #PCIe #硬盤盒

    硬盤PCIe
    ICY DOCK硬盤盒
    發布于 :2024年07月11日 17:21:28

    PCIe總線的復位方式是什么?

    PCIe總線規定了兩個復位方式:conventional Reset和FLR(FunctionLevel Reset),而Conventional Reset由進一步分為兩大類:Fundamental Reset和Non-Fun
    發表于 10-16 08:19

    簡談PCIe的軟件配置方式

    ? ? ? ?大家好,又到了每日學習的時間了,今天我們來聊一聊PCIe的軟件配置方式。? ? ? ?關于PCIe的軟件配置和初始化? ? ? ?PCIe設計出來考慮了和pci兼容問題。
    的頭像 發表于 07-27 19:16 ?3642次閱讀
    簡談<b class='flag-5'>PCIe</b>的軟件配置<b class='flag-5'>方式</b>

    復位電路的作用及基本的復位方式

    手動按鈕復位需要人為在復位輸入端RST上加入高電平(圖1)。一般采用的辦法是在RST端和正電源Vcc之間接一個按鈕。當人為按下按鈕時,則Vcc的+5V電平就會直接加到RST端。手動按鈕復位的電路如所示。由于人的動作再快也會使按鈕
    的頭像 發表于 09-06 09:40 ?11.6w次閱讀
    <b class='flag-5'>復位</b>電路的作用及基本的<b class='flag-5'>復位</b><b class='flag-5'>方式</b>

    PCIe總線的信號介紹

    該信號為全局復位信號,由處理器系統提供(RC),處理器系統需要為PCIe插槽和PCIe設備提供該復位
    發表于 12-22 14:45 ?2.3w次閱讀

    PCIe總線的兩種復位方式

    傳統的復位方式分為Cold、Warm和Hot Reset。PCIe設備可以根據當前的設備的運行狀態選擇合適的復位方式
    的頭像 發表于 12-30 09:37 ?2.3w次閱讀

    CPU的復位方式有哪些

    上電復位就是直接給產品上電,上電復位與低壓LVR操作有聯系,電源上電的過程是逐漸上升的曲線過程,這個過程不是瞬間的完成的,一上電時候系統進行初始化,此時振蕩器開始工作并提供系統時鐘,
    的頭像 發表于 09-17 11:05 ?1.2w次閱讀
    CPU的<b class='flag-5'>復位</b><b class='flag-5'>方式</b>有哪些

    簡述復位電路概述以及方式和目的

    是有的電路需要時鐘信號那樣,而有的電路是不需要復位信號的。復位又分為同步復位和異步復位,這兩種各有優缺點。下面我們主要來說說復位信號的用途和
    的頭像 發表于 06-28 09:49 ?6690次閱讀

    stm32復位方式分類

    stm32復位方式分類按照復位區域的范圍分類,大概可以分為系統復位,電源復位,備份域
    發表于 12-07 19:36 ?12次下載
    stm32<b class='flag-5'>復位</b><b class='flag-5'>方式</b>分類

    GD32 MCU電源復位系統復位有什么區別

    GD32 MCU的復位分為電源復位系統復位,電源復位又稱為冷復位,相較于
    的頭像 發表于 02-02 09:37 ?1429次閱讀
    GD32 MCU電源<b class='flag-5'>復位</b>和<b class='flag-5'>系統</b><b class='flag-5'>復位</b>有什么區別

    FPGA同步復位和異步復位

    FPGA(Field-Programmable Gate Array,現場可編程門陣列)中的復位操作是設計過程中不可或缺的一環,它負責將電路恢復到初始狀態,以確保系統的正確啟動和穩定運行。在FPGA設計中,復位
    的頭像 發表于 07-17 11:12 ?1371次閱讀

    STM32復位電路用復位芯片和阻容復位電路區別

    系統中,復位電路是保證系統正常工作的重要部分。當系統出現異常或需要重新啟動時,復位電路能夠迅速將系統
    的頭像 發表于 08-06 10:26 ?1165次閱讀