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