楊可
摘要:通過分析機載網絡節(jié)點各個復位源的特點,針對復位過程中產生的訪問錯誤和復位死鎖問題,設計了一種軟硬件結合的復位方法。首先介紹了該復位方法的實現(xiàn)架構,其次分析了該復位方法的各種復位過程,最后說明了應用該復位方法時需要注意的問題。結果表明該復位方法在成功復位網絡節(jié)點的同時,還可以實時檢測網絡節(jié)點的運行狀態(tài),有利于提高系統(tǒng)設計的可靠性。
關鍵詞: 網絡節(jié)點1; 復位2; 死鎖3; 故障檢測4
中圖分類號:TP331.2 文獻標識碼:A 文章編號:1009-3044(2016)03-0288-03
1 引言
隨著機載電子系統(tǒng)的發(fā)展,網絡節(jié)點的設計日益復雜,如何確保網絡節(jié)點的穩(wěn)定運行已經成為系統(tǒng)設計的關鍵。復位功能是系統(tǒng)正常運行的先決條件[1],網絡節(jié)點需要使用一種可靠的復位方法。
復位就是為了把系統(tǒng)初始化到一個確定的狀態(tài)[2],它的基本功能就是在系統(tǒng)上電時提供復位信號,直至系統(tǒng)穩(wěn)定后,撤銷復位信號;或者在系統(tǒng)異常時對系統(tǒng)進行復位,使系統(tǒng)恢復正常工作。
本文通過分析網絡節(jié)點的復位情況,設計了一種軟件和硬件結合的復位方法。該方法能夠處理各種復位之間的組合及順序,保證網絡節(jié)點在上電后成功復位,又可以實時檢測網絡節(jié)點的運行,確保網絡節(jié)點出現(xiàn)故障后自動進行復位。
2 網絡節(jié)點復位分析
為了增強網絡節(jié)點的通用性,系統(tǒng)采用主機和網絡節(jié)點分離的方法。主機和網絡節(jié)點在上電后分別進行復位,復位完成后主機通過主機接口訪問網絡節(jié)點。
復位通常包括上電復位、外部復位、軟件復位和看門狗(WatchDog)復位[3],網絡節(jié)點的復位源由本地和外部兩部分復位源組成,本地復位源包括上電復位和看門狗復位,外部復位源包括主機硬件復位和主機軟件復位。
上電復位:該復位在網絡節(jié)點上電時提供復位信號,確保網絡節(jié)點在上電后進入初始化狀態(tài)。由于網絡節(jié)點在上電時需要將程序從存儲器搬至FPGA,上電復位信號在程序搬運完成前持續(xù)有效;
看門狗復位:該復位在網絡節(jié)點運行異常時提供復位信號,確保節(jié)點檢測到故障后進行節(jié)點復位。檢測的故障包括軟件跑飛、時鐘故障和電源故障;
主機硬件復位:該復位為主機通過硬件連線提供的復位信號,確保主機將節(jié)點復位到初始化狀態(tài)。復位的時機為主機上電或需要單獨復位節(jié)點時;
主機軟件復位:該復位為主機通過軟件命令發(fā)送的復位。網絡節(jié)點在接收到軟件復位命令后通過解析生成復位信號,然后控制需要復位的功能模塊和軟件進行復位。
網絡節(jié)點在使用這幾種復位源時,因為使用順序錯誤或組合不當會產生訪問錯誤或復位死鎖的問題。
2.1 訪問錯誤
使用上電復位和主機硬件復位組合時,如果上電復位先完成,則主機在主機硬件復位完成后可以正確訪問網絡節(jié)點。如果主機硬件復位先于上電復位完成,主機訪問網絡節(jié)點時網絡節(jié)點正在上電復位,會出現(xiàn)訪問錯誤,見圖1。
從圖1的示圖(A)可以看出,網絡節(jié)點在A1時刻完成上電復位。主機在之后的A2時刻完成主機硬件復位,此時主機訪問網絡節(jié)點正確。示圖(B)可以看出,主機在B1時刻完成主機硬件復位,網絡節(jié)點在B2時刻完成上電復位。主機在B1到B2這段時間訪問網絡節(jié)點時網絡節(jié)點還在上電復位,會出現(xiàn)訪問錯誤。
2.2 復位死鎖
為了避免訪問錯誤,網絡節(jié)點在復位后上報完成信號給主機,主機撤銷主機硬件復位后再訪問網絡節(jié)點。如果網絡節(jié)點將主機硬件復位作為復位完成信號的輸入,會出現(xiàn)復位死鎖的問題,見圖2。
主機硬件復位信號作為網絡節(jié)點復位的輸入控制網絡節(jié)點開始復位,所有的復位源撤銷后生成復位完成信號,但主機在收到復位完成信號后才能撤銷主機硬件復位信號,網絡節(jié)點出現(xiàn)了復位死鎖錯誤。
由以上分析可以看出,復位的順序和組合會影響網絡節(jié)點的運行,合理分配復位的順序以及作用的范圍非常重要。
3 復位系統(tǒng)設計
為了解決網絡節(jié)點訪問錯誤和復位死鎖的問題,設計了一種復位方法。該復位方法基于先本地后外部的復位原則,按照從硬件到軟件的復位順序,使用上電復位、看門狗復位、主機硬件復位和主機軟件復位作為輸入,在復位完成后上報完成信號給主機。復位系統(tǒng)框圖見圖3。
功能模塊中的時鐘檢測單元負責檢測時鐘的正確性,生成硬件喂狗信號,軟件中的軟件檢測程序檢測軟件的運行情況,生成軟件喂狗信號。硬件喂狗和軟件喂狗信號通過邏輯與輸入復位芯片,由復位芯片生成看門狗復位,復位芯片同時對電源進行檢測。
看門狗復位和上電復位通過邏輯與后生成本地復位。主機硬件復位和本地復位分別送給功能模塊,主機軟件復位通過軟件命令送給軟件。本地復位完成后由軟件生成復位完成信號上報給主機,主機在主機上電復位完成后檢測該信號,在該信號有效時主機才能訪問網絡節(jié)點。
主機硬件復位和本地復位均可復位節(jié)點的所有功能模塊和軟件,主機軟件復位可以復位節(jié)點的相關軟件及功能模塊。所有的復位必須先完成功能模塊的復位后才可以完成軟件的復位。
網絡節(jié)點是主機訪問的對象,當本地復位和主機復位組合進行復位時,應先完成本地復位,主機檢測到本地復位完成再開始主機復位。
4 網絡節(jié)點復位過程
網絡節(jié)點的復位過程可以分為上電初始化復位、故障檢測復位和主機復位。
4.1上電初始化復位
上電后,網絡節(jié)點首先開始上電初始化復位,使用上電復位作為輸入,復位過程如圖4。
上電初始化復位的持續(xù)時間由程序加載時間決定,可以通過加快程序加載減少上電初始化復位時間。
4.2故障檢測復位
網絡節(jié)點在運行過程中實時檢測時鐘、電源及軟件運行的情況。當時鐘、電源及軟件出現(xiàn)異常時通過使能看門狗復位復位網絡節(jié)點。如果故障在復位后無法消除,則看門狗復位持續(xù)復位網絡節(jié)點。故障檢測復位過程如圖5。
4.3主機復位
主機在需要復位網絡節(jié)點時,通過使能主機硬件復位或主機軟件復位進行復位,主機復位過程如圖6。
主機硬件復位的持續(xù)時間由主機決定,在主機準備好訪問網絡節(jié)點前撤銷主機硬件復位即可。主機軟件復位通過軟件解析生成復位信號,該復位信號在相關功能模塊和軟件開始復位后撤銷。
當本地復位和主機復位組合進行復位時,系統(tǒng)先執(zhí)行上電初始化復位過程,再執(zhí)行主機復位過程。
通過以上分析可以看出,上電初始化復位、故障檢測復位和主機復位均可成功復位系統(tǒng),其復位過程不會引起訪問錯誤或復位死鎖的問題。
5 應用中需要注意的問題
本設計中主機和網絡節(jié)點上電時為異步復位,在應用該復位方法時需要合理分配復位的過程。
PCIE總線規(guī)范中規(guī)定,設備退出復位狀態(tài)后,必須在80ms內開始鏈路定向和初始化。為了使軟件可見,設備必須在復位結束的100ms內準備好接收配置請求。[4]
當使用PCIE總線進行通信時,主機和網絡節(jié)點分別在復位完成后開始鏈路定向和初始化,如果兩者復位結束的時間相差大于100ms, PCIE鏈路定向和初始化失敗,主機無法通過PCIE總線接口訪問網絡節(jié)點。
為了解決該問題,在使用PCIE總線等對初始化時間有要求的總線接口進行通信時,主機需要在網絡節(jié)點上電復位完成后單獨對網絡節(jié)點進行一次主機復位,使主機和網絡節(jié)點同步完成復位,保證總線接口初始化成功。
6 結束語
本文針對網絡節(jié)點提出了一種軟硬件結合的復位方法。通過分析該復位方法的復位過程表明,該復位方法不但可以成功復位網絡節(jié)點,還可以實時檢測網絡節(jié)點的運行狀態(tài),同時消除訪問錯誤和復位死鎖的問題,有利于提高系統(tǒng)設計的可靠性。目前該設計已成功應用于機載網絡節(jié)點中。
參考文獻:
[1] 王艷軍, 張勇. 一種實用的多芯片系統(tǒng)同步復位方法[J]. 光電技術應用, 2007,22(5):60-62.
[2] 金立平.淺析MCU系統(tǒng)的復位電路[J].硅谷,2010(9):23.
[3] 孫國志,寧寧,張弛. 一種片上系統(tǒng)復位電路的設計[J]. 電子技術應用,2012,38(12):32-35.
[4] Ravi Budruk, Don Anderson,Tom Shanley, PCI Express System Architecture.TIAN Y, WANG S,ZHANG B, translated, Beijing: Publishing House of Electronics Industry,2005.( Ravi Budruk, Don Anderson,Tom Shanley, PCI Express系統(tǒng)體系結構標準教材[M]. 田玉敏,王崧,張波,譯. 北京:電子工業(yè)出版社,2005.
[5] 王國輝. Reset與嵌入式系統(tǒng)應用的穩(wěn)定性[J]. 單片機與嵌入式系統(tǒng)應用,2013(8):5-8.
[6] 林學龍. MPC8xx系列處理器的嵌入式系統(tǒng)復位電路設計[J]. 單片機與嵌入式系統(tǒng)應用,2005(4):80-83.
[7] 郝建, 原茵茵. FPGA復位的可靠性設計方法[J]. 電子科技, 2013,26(10):125-127.
[8] 杜珺. 單片機復位狀態(tài)及外設復位信號的處理[J]. 信息技術與信息化,2014(12):70-71.