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

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

3天內不再提示

復位那些小事—典型的軟復位流程

冬至配餃子 ? 來源:芯時代青年 ? 作者:尼德蘭的喵 ? 2023-12-04 13:46 ? 次閱讀

在聊到復位的時候總會區(qū)分兩個概念:硬復位和軟復位。

硬復位就是通常所說的復位,是通過硬件電路或者特殊的硬件信號來觸發(fā)的復位過程。當拉低外部復位信號時硬復位被觸發(fā),復位線會直接影響系統的硬件電路與寄存器,將系統的內部狀態(tài)恢復到一個已知的初始狀態(tài)。

硬復位通常是由外部的控制電路或者特定的硬件引腳來觸發(fā),例如按下一個復位按鈕或者通過特定的電路邏輯條件。

軟復位是通過軟件的程序代碼或者寄存器配置等方式觸發(fā)的復位過程。當軟復位被觸發(fā)時,系統一般需要執(zhí)行特定的步驟來響應軟復位需求,確認進入待復位狀態(tài)后才會進入復位流程,將系統的內部狀態(tài)恢復到一個已知的初始狀態(tài)。軟復位通常是在程序執(zhí)行中的某個特定條件下發(fā)生,例如檢測到一個錯誤或者需要重新初始化系統時。

硬復位一般是整芯片甚至芯片組復位,這個過程可以說是比較簡單粗暴的。而軟復位一般是芯片的部分系統進行復位重啟,有時也稱為快速復位、動態(tài)復位、配置復位,大多是通過一系列的流程來完成的。

本篇中就聊一聊典型的系統軟復位流程。

1.觸發(fā)軟復位啟動條件。這一般是系統內部或SOC出現了致命的錯誤比如任務執(zhí)行超時、總線數據錯誤或安全機制報錯等,上位的MCU或者CPU判斷需要對該系統進行軟復位操作以恢復功能;

2.停止下發(fā)任務。判斷需要對系統軟復位后,應當從任務層停止下發(fā)新的任務,避免系統錯誤進一步的蔓延影響其他進程;

3.下達軟復位請求。請求可能通過配置系統的寄存器或者從控制接口下發(fā)使能信號;

4.系統接收到軟復位的請求后,需要做出一系列的處理。這時一般有兩種方向選擇,一種是主動停止工作,比如停止執(zhí)行接下來的取指、在指令或者卷積層邊界停止進一步的計算;另一種是被動停止工作,也就是內部邏輯不停止工作,而通過系統邊界的模塊響應軟復位,進而對內部通路進行阻塞或者假握手假接收等行為使內部被動停止工作。

5.系統邊界的模塊監(jiān)聽所有通路,等待所有已經發(fā)出的請求全部收回應答(典型的比如AW請求收回Bresp,AR請求收回Rdata),這樣做的目的是避免本系統的復位對SOC或其他系統產生影響,也避免對解除復位后的本系統產生影響(如未收全,本系統復位解除后總線返回了一筆復位前的Bresp,那本系統直接就亂了);

6.邊界的模塊收全所有應有的返回信息后,或者未能收全但是到達超時閾值后,系統進入待復位狀態(tài);

7.此時如果本系統仍然保留著訪問DDR和sram的備份通路,那么上位機可以通過配置寄存器去間接訪問內存和寄存器進行保留現場。如果沒有規(guī)劃該功能,則略過這一步驟;

8.上位機配置復位保護寄存器使能復位保護電路,避免系統復位過程中有毛刺或者使能信號擴散到總線或其他系統;

9.上位機配置對系統進行時鐘降配或者關斷時鐘等操作,這個是可選操作,一般來說如果復位保護做的比較嚴格,這里不對時鐘進行處理也沒關系;

10.配置復位或拉低系統的復位信號,持續(xù)一段時間,這個時間沒有太嚴格的要求,按毫秒計時也沒有關系,少的話也得幾十拍確保系統內所有寄存器都完成了復位;

11.復位已經完成,之后配置解復位或拉高系統的復位信號,解除系統的復位狀態(tài),之后等待一段時間等內部電路穩(wěn)定下來;

12.配置時鐘恢復工作頻率或恢復時鐘,可選;

13.配置復位保護寄存器解除復位保護,恢復總線連接;

14.可以再等待一段時間后,重新下任務或恢復現場,重啟系統完成。

軟復位的流程沒有特別嚴格的規(guī)定,通常是根據芯片的需求而規(guī)劃,上面所述也只是經驗之談。不過大抵都遵循停任務 - 收應答 - 斷連接 - 復位 - 解復位 - 重連接 - 下任務的思路。

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

    關注

    31

    文章

    5343

    瀏覽量

    120348
  • DDR
    DDR
    +關注

    關注

    11

    文章

    712

    瀏覽量

    65339
  • 上位機
    +關注

    關注

    27

    文章

    942

    瀏覽量

    54810
  • 硬件電路
    +關注

    關注

    39

    文章

    243

    瀏覽量

    29229
  • SRAM存儲器
    +關注

    關注

    0

    文章

    88

    瀏覽量

    13294
收藏 人收藏

    評論

    相關推薦

    CXL系統啟動和復位流程概覽

    這三種復位被歸納為傳統(Conventional)復位。Function級復位和CXL復位不是傳統復位。
    的頭像 發(fā)表于 09-22 14:37 ?2945次閱讀
    CXL系統啟動和<b class='flag-5'>復位</b><b class='flag-5'>流程</b>概覽

    復位那些小事—系統解復位的特殊處理

    復位就是復位撤離,系統解復位就是復位結束了系統準備開始工作。
    的頭像 發(fā)表于 12-04 15:25 ?1748次閱讀
    <b class='flag-5'>復位</b><b class='flag-5'>那些小事</b>—系統解<b class='flag-5'>復位</b>的特殊處理

    復位電路沒有小事

    復位電路不知道該定位成是模擬電路合適數字電路,原因是功能和結構太簡單了,好多人都不屑深入研究。而世上的事就是這樣,你認真研究它確實是不難,你要忽視它麻煩就大了。曾經有一家國內的設計公司(上市公司
    發(fā)表于 07-03 04:20

    復位電路無小事

    復位電路無小事,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 17:15 ?0次下載

    430怎么復位_430復位方法詳解

    最近在搞430的FLASH的自定義法(利用串口)程序燒寫,燒寫完成后斷電復位,reset按鍵就可以運行新的程序。但是和學長交流了一下,這種方法不夠好,希望有一種復位的方式。
    的頭像 發(fā)表于 05-20 10:04 ?6622次閱讀

    MCU復位原理詳解

    想要實現復位,先給VRCTKEY賦個0x05FA,再想SYSRESETEQ寫1即可實現復位。
    發(fā)表于 10-27 10:47 ?9354次閱讀

    如何使用C語言實現復位詳細資料說明

    本文檔的有內容詳細介紹的是如何使用C語言實現復位詳細資料說明。
    發(fā)表于 06-14 17:44 ?1次下載
    如何使用C語言實現<b class='flag-5'>軟</b><b class='flag-5'>復位</b>詳細資料說明

    詳細講解同步后的復位是同步復位還是異步復位?

    針對異步復位、同步釋放,一直沒搞明白在使用同步化以后的復位信號時,到底是使用同步復位還是異步復位
    的頭像 發(fā)表于 04-27 18:12 ?4765次閱讀
    詳細講解同步后的<b class='flag-5'>復位</b>是同步<b class='flag-5'>復位</b>還是異步<b class='flag-5'>復位</b>?

    STM32芯片的那些系統級復位功能

    我們知道,STM32芯片里有很多系統級的復位,比方上電復位、欠壓復位、看門狗復位、軟件復位、復位
    的頭像 發(fā)表于 10-19 09:06 ?5245次閱讀

    談談復位那些

    復位信號幾乎是除了時鐘信號外最常用的信號了,幾乎所有數字系統在上電的時候都會進行復位,這樣才能保持設計者確定該系統的系統模式的狀態(tài),以便于更好的進行電子設計,并且在任意時刻,確保使用者總能對電路系統進行復位,使電路從初始的狀態(tài)開
    的頭像 發(fā)表于 06-02 15:11 ?1992次閱讀
    談談<b class='flag-5'>復位</b><b class='flag-5'>那些</b>事

    stm32復位 內核復位和系統復位

    內核復位:它會使STM32內核(Cortex-M)進行復位,而不會影響其外設,如GPIO、TIM、USART、SPI等這些寄存器的復位。
    的頭像 發(fā)表于 08-01 17:21 ?4884次閱讀

    同步復位與異步復位的區(qū)別

    請簡述同步復位與異步復位的區(qū)別,說明兩種復位方式的優(yōu)缺點,并解釋“異步復位,同步釋放”。
    的頭像 發(fā)表于 08-14 11:49 ?7258次閱讀

    基于DWC_ether_qos的以太網驅動開發(fā)-復位介紹與問題案例

    一般模塊都會有復位的功能,復位在驅動編寫中很重要。一般初始化時執(zhí)行復位使得模塊進入確定的初
    的頭像 發(fā)表于 09-02 09:17 ?1651次閱讀
    基于DWC_ether_qos的以太網驅動開發(fā)-<b class='flag-5'>軟</b><b class='flag-5'>復位</b>介紹與問題案例

    如何排查GD32 MCU復位是由哪個復位源導致的?

    上期為大家講解了GD32 MCU復位包括電源復位和系統復位,其中系統復位還包括獨立看門狗復位、內核
    的頭像 發(fā)表于 02-03 09:46 ?1736次閱讀
    如何排查GD32 MCU<b class='flag-5'>復位</b>是由哪個<b class='flag-5'>復位</b>源導致的?

    復位電路的設計問題

    前言 最近看advanced fpga 以及fpga設計實戰(zhàn)演練中有講到復位電路的設計,才知道復位電路有這么多的門道,而不是簡單的外界信號輸入系統復位。 流程: 1.同步
    的頭像 發(fā)表于 11-15 11:13 ?165次閱讀
    <b class='flag-5'>復位</b>電路的設計問題