在聊到復位的時候總會區(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ī)劃,上面所述也只是經驗之談。不過大抵都遵循停任務 - 收應答 - 斷連接 - 復位 - 解復位 - 重連接 - 下任務的思路。
-
寄存器
+關注
關注
31文章
5343瀏覽量
120348 -
DDR
+關注
關注
11文章
712瀏覽量
65339 -
上位機
+關注
關注
27文章
942瀏覽量
54810 -
硬件電路
+關注
關注
39文章
243瀏覽量
29229 -
SRAM存儲器
+關注
關注
0文章
88瀏覽量
13294
發(fā)布評論請先 登錄
相關推薦
評論