在聊到復(fù)位的時候總會區(qū)分兩個概念:硬復(fù)位和軟復(fù)位。
硬復(fù)位就是通常所說的復(fù)位,是通過硬件電路或者特殊的硬件信號來觸發(fā)的復(fù)位過程。當拉低外部復(fù)位信號時硬復(fù)位被觸發(fā),復(fù)位線會直接影響系統(tǒng)的硬件電路與寄存器,將系統(tǒng)的內(nèi)部狀態(tài)恢復(fù)到一個已知的初始狀態(tài)。
硬復(fù)位通常是由外部的控制電路或者特定的硬件引腳來觸發(fā),例如按下一個復(fù)位按鈕或者通過特定的電路邏輯條件。
軟復(fù)位是通過軟件的程序代碼或者寄存器配置等方式觸發(fā)的復(fù)位過程。當軟復(fù)位被觸發(fā)時,系統(tǒng)一般需要執(zhí)行特定的步驟來響應(yīng)軟復(fù)位需求,確認進入待復(fù)位狀態(tài)后才會進入復(fù)位流程,將系統(tǒng)的內(nèi)部狀態(tài)恢復(fù)到一個已知的初始狀態(tài)。軟復(fù)位通常是在程序執(zhí)行中的某個特定條件下發(fā)生,例如檢測到一個錯誤或者需要重新初始化系統(tǒng)時。
硬復(fù)位一般是整芯片甚至芯片組復(fù)位,這個過程可以說是比較簡單粗暴的。而軟復(fù)位一般是芯片的部分系統(tǒng)進行復(fù)位重啟,有時也稱為快速復(fù)位、動態(tài)復(fù)位、配置復(fù)位,大多是通過一系列的流程來完成的。
本篇中就聊一聊典型的系統(tǒng)軟復(fù)位流程。
1.觸發(fā)軟復(fù)位啟動條件。這一般是系統(tǒng)內(nèi)部或SOC出現(xiàn)了致命的錯誤比如任務(wù)執(zhí)行超時、總線數(shù)據(jù)錯誤或安全機制報錯等,上位的MCU或者CPU判斷需要對該系統(tǒng)進行軟復(fù)位操作以恢復(fù)功能;
2.停止下發(fā)任務(wù)。判斷需要對系統(tǒng)軟復(fù)位后,應(yīng)當從任務(wù)層停止下發(fā)新的任務(wù),避免系統(tǒng)錯誤進一步的蔓延影響其他進程;
3.下達軟復(fù)位請求。請求可能通過配置系統(tǒng)的寄存器或者從控制接口下發(fā)使能信號;
4.系統(tǒng)接收到軟復(fù)位的請求后,需要做出一系列的處理。這時一般有兩種方向選擇,一種是主動停止工作,比如停止執(zhí)行接下來的取指、在指令或者卷積層邊界停止進一步的計算;另一種是被動停止工作,也就是內(nèi)部邏輯不停止工作,而通過系統(tǒng)邊界的模塊響應(yīng)軟復(fù)位,進而對內(nèi)部通路進行阻塞或者假握手假接收等行為使內(nèi)部被動停止工作。
5.系統(tǒng)邊界的模塊監(jiān)聽所有通路,等待所有已經(jīng)發(fā)出的請求全部收回應(yīng)答(典型的比如AW請求收回Bresp,AR請求收回Rdata),這樣做的目的是避免本系統(tǒng)的復(fù)位對SOC或其他系統(tǒng)產(chǎn)生影響,也避免對解除復(fù)位后的本系統(tǒng)產(chǎn)生影響(如未收全,本系統(tǒng)復(fù)位解除后總線返回了一筆復(fù)位前的Bresp,那本系統(tǒng)直接就亂了);
6.邊界的模塊收全所有應(yīng)有的返回信息后,或者未能收全但是到達超時閾值后,系統(tǒng)進入待復(fù)位狀態(tài);
7.此時如果本系統(tǒng)仍然保留著訪問DDR和sram的備份通路,那么上位機可以通過配置寄存器去間接訪問內(nèi)存和寄存器進行保留現(xiàn)場。如果沒有規(guī)劃該功能,則略過這一步驟;
8.上位機配置復(fù)位保護寄存器使能復(fù)位保護電路,避免系統(tǒng)復(fù)位過程中有毛刺或者使能信號擴散到總線或其他系統(tǒng);
9.上位機配置對系統(tǒng)進行時鐘降配或者關(guān)斷時鐘等操作,這個是可選操作,一般來說如果復(fù)位保護做的比較嚴格,這里不對時鐘進行處理也沒關(guān)系;
10.配置復(fù)位或拉低系統(tǒng)的復(fù)位信號,持續(xù)一段時間,這個時間沒有太嚴格的要求,按毫秒計時也沒有關(guān)系,少的話也得幾十拍確保系統(tǒng)內(nèi)所有寄存器都完成了復(fù)位;
11.復(fù)位已經(jīng)完成,之后配置解復(fù)位或拉高系統(tǒng)的復(fù)位信號,解除系統(tǒng)的復(fù)位狀態(tài),之后等待一段時間等內(nèi)部電路穩(wěn)定下來;
12.配置時鐘恢復(fù)工作頻率或恢復(fù)時鐘,可選;
13.配置復(fù)位保護寄存器解除復(fù)位保護,恢復(fù)總線連接;
14.可以再等待一段時間后,重新下任務(wù)或恢復(fù)現(xiàn)場,重啟系統(tǒng)完成。
軟復(fù)位的流程沒有特別嚴格的規(guī)定,通常是根據(jù)芯片的需求而規(guī)劃,上面所述也只是經(jīng)驗之談。不過大抵都遵循停任務(wù) - 收應(yīng)答 - 斷連接 - 復(fù)位 - 解復(fù)位 - 重連接 - 下任務(wù)的思路。
-
寄存器
+關(guān)注
關(guān)注
31文章
5253瀏覽量
119201 -
DDR
+關(guān)注
關(guān)注
11文章
697瀏覽量
64934 -
上位機
+關(guān)注
關(guān)注
27文章
927瀏覽量
54550 -
硬件電路
+關(guān)注
關(guān)注
39文章
238瀏覽量
29114 -
SRAM存儲器
+關(guān)注
關(guān)注
0文章
88瀏覽量
13243
發(fā)布評論請先 登錄
相關(guān)推薦
評論