鐘海林 張翼飛 張景景 楊粵濤 曹峰
(1.蘇州長風(fēng)航空電子有限公司 江蘇省蘇州市 215151 2.空裝駐蘇州地區(qū)軍事代表室 江蘇省蘇州市 215151)
傳統(tǒng)航空顯示器通信系統(tǒng)中一般為單主機通信,不支持熱備份冗余功能,一旦出現(xiàn)故障,其系統(tǒng)可靠性和穩(wěn)定性往往得不到有效地保障。鑒于此,本文采用基于Tsi578 交換機的四級RapidIO 總線交叉級聯(lián)結(jié)構(gòu),并設(shè)計實現(xiàn)了一種深度優(yōu)先結(jié)合分級交換機端口升序處理的自適應(yīng)動態(tài)遞歸遍歷方法,該方法能夠有效地實現(xiàn)對多級RapidIO 總線級聯(lián)系統(tǒng)進(jìn)行枚舉,在其中一個通信主機出現(xiàn)故障后,備份主機能夠接替原通信主機進(jìn)行工作,并具備對系統(tǒng)通信主機熱復(fù)位操作及動態(tài)修改各級交換機路由信息,實現(xiàn)航空顯示器通信主機備份和通信路徑冗余功能,極大地提高了系統(tǒng)的可靠性和穩(wěn)定性。
基于RapidIO 總線的顯示器系統(tǒng)架構(gòu)如圖1 所示,系統(tǒng)包含DCM1、DCM2、GPM1、GPM2 和四個Tsi578 交換機,其中DCM為通信計算機主機(DCM2 作為備份主機)與兩塊GPM(圖形產(chǎn)生板)進(jìn)行數(shù)據(jù)傳輸,DCM 采用MPC8548E 作為主通信處理器,GPM 采用MPC8640 作為主通信處理器。系統(tǒng)通過Tsi578 構(gòu)建形成星型與環(huán)形RapidIO 總線,其中DCM1 默認(rèn)為RpaidIO 主機,如果DCM1 出現(xiàn)故障,則自動由DCM2 接替DCM1 工作。通過設(shè)計相應(yīng)枚舉算法對整個RapidIO 總線進(jìn)行枚舉,支持RapidIO 總線和路由表動態(tài)變化和主機(DCM1)與備份主機(DCM2)切換枚舉。
MPC8548E 與MPC8640 內(nèi)部集成RapidIO 總線控制器,其中RapidIO 總線控制器支持x1/x4 模式,傳輸速率可為1.25Gb、2.5Gb和3.125Gb,支持消息和門鈴機制,消息單元支持存儲地址寄存器最大長度4KB 的消息。Tsi578 交換芯片有8 個媒體訪問控制器(MAC)組成16 個SRIO 端口,16 個端口按奇偶端口劃分成對,在4x 串行模式下最多支持8 個端口,在1x 串行模式下最多支持16個端口,各端口速率可單獨設(shè)置,每個端口具有靈活的測試特性包含若干回環(huán)模式和位錯誤率測試。
根據(jù)系統(tǒng)架構(gòu)與功能需求,本文按照深度優(yōu)先原則對級聯(lián)交換機進(jìn)行分級處理(一級、二級、三級、四級),每級按端口升序處理并結(jié)合主機位置判斷處理策略,提出了一種深度優(yōu)先結(jié)合分層交換機升序處理的自適應(yīng)動態(tài)遞歸遍歷算法。該算法枚舉流程示意如圖2 所示,系統(tǒng)在DCM1 上電后首先進(jìn)行一級交換處理,一級交換機處理主要是針對與DCM1 相連的外部設(shè)備,首先建立一級交換機與主控芯片MPC8548E 物理鏈接,并對一級交換機按端口按升序方式進(jìn)行枚舉,系統(tǒng)所有RapidIO 總線接口連接采用x4 模式,所以下一個端口號為端口2,若是1x 模式則下一個端口號為端口1。在一級交換枚舉過程中發(fā)現(xiàn)下一級交換設(shè)備則進(jìn)行二級交換枚舉,同樣按深度優(yōu)先原則遞歸枚舉該端口所連接的RapidIO 交換機及設(shè)備;依次采用同樣方法處理三級交換枚舉和四季交換枚舉,系統(tǒng)最大的深度是四級交換機,四級為最后一級枚舉,此后便依次遞歸返回到前一級遍歷處理例程中。系統(tǒng)遍歷枚舉過程同步采集RapidIO總線通信路由信息表,DCM1 通過發(fā)出相應(yīng)的Maintenance read 或writ 操作,配置相應(yīng)級別的交換機寄存器,設(shè)置對應(yīng)的路由信息。
需要注意的是對各個交換機進(jìn)行配置時,不同層級的交換遍歷需要設(shè)置相應(yīng)的跳數(shù),否則可能引起系統(tǒng)異常而終止枚舉過程。當(dāng)系統(tǒng)通信主機由DCM1 切換為DCM2 時,需要DCM2 重新對RapidIO 網(wǎng)絡(luò)進(jìn)行枚舉,并對DCM1 枚舉避讓,防止出現(xiàn)對故障部件遍歷而導(dǎo)致系統(tǒng)異常。
圖1:系統(tǒng)架構(gòu)圖
圖2:RapidIO 總線枚舉流程示意圖
表1:系統(tǒng)交換路由表
本系統(tǒng)由四個交換機組成,各個端點對應(yīng)連接端口號是相對固定的,但實際應(yīng)用中,可能會存在其中一個或多個端點出現(xiàn)故障的情況。因此如何合理地設(shè)置系統(tǒng)通信路由信息是非常重要的,本文在具體枚舉實施過程中融合進(jìn)行相應(yīng)路由配置的,其次緊隨枚舉過程進(jìn)行路由信息配置從而實現(xiàn)自適應(yīng)動態(tài)地修正實際中相應(yīng)交換機的路由表(Lookup Table,LUT)。路由表的設(shè)置通過配置RIO_ROUTE_CFG_DESTID 和RIO_ROUTE_CFG_PORT 確定目的ID 與端口號之間的對應(yīng)關(guān)系實現(xiàn),并通過查表方式實現(xiàn)系統(tǒng)通信數(shù)據(jù)包的路由與轉(zhuǎn)發(fā)。LUT 在系統(tǒng)正常運行的過程中可以再編程,通過主機的Maintance read and write 軟件維護(hù)包,對交換芯片的路由表寄存器進(jìn)行配置,改變輸入包的目的ID 域到輸出端口號,從而改變路由。
需要注意的是,由于是在自動遍歷枚舉系統(tǒng)的情況下,存在未知的情況下對后續(xù)遍歷設(shè)備的數(shù)目及拓?fù)浣Y(jié)構(gòu)進(jìn)行枚舉的需求,只有妥善地處理這種情況才能實現(xiàn)系統(tǒng)真正地動態(tài)自適應(yīng)的枚舉。需要在一級交換機中將所有通往二級、三級及四級交換機的路由信息都設(shè)置完畢,在其后幾級交換機中也做類似的設(shè)置。表1 是根據(jù)上述路由策略配置的系統(tǒng)各級交換機路由信息。
系統(tǒng)的余度設(shè)計包含兩個方面:一是系統(tǒng)通信計算機雙機熱備份,二是系統(tǒng)通信路徑冗余。其中通信計算機雙機熱備份是通過DCM1 與DCM2 熱備份實現(xiàn),而通信路徑冗余則通過對DCM2 冗余枚舉構(gòu)成。
通信計算機雙機熱備份機制是在系統(tǒng)中提供一個備份通信主機,在正常上電啟動模式下,由DCM1 負(fù)責(zé)對整個系統(tǒng)進(jìn)行枚舉并與GPM1 和GPM2 進(jìn)行數(shù)據(jù)通信,而DCM2 則根據(jù)位置判斷不對系統(tǒng)進(jìn)行枚舉。DCM1 成功完成RapidIO 網(wǎng)絡(luò)枚舉后,通過門鈴信息與DCM2 進(jìn)行心跳包通信,一旦在規(guī)定的時間內(nèi)DCM2 沒有接收到DCM1 的心跳包,則認(rèn)為DCM1 沒有成功對整個RapidIO網(wǎng)絡(luò)進(jìn)行枚舉或者成功枚舉后在運行一段時間后出現(xiàn)故障不能正常完成RapidIO 通信,此時DCM2 接管整個RapidIO 網(wǎng)絡(luò)并重新枚舉,若DCM2 也未正常完成RapidIO 枚舉或不能實現(xiàn)與GPM1 和GPM2 的RapidIO 通信則報向上級處理例程報故,否則使用DCM2替代DCM1 與GPM1 和GPM2 進(jìn)行數(shù)據(jù)通行。
通信路徑冗余機制的實現(xiàn)則與系統(tǒng)的拓?fù)浣Y(jié)構(gòu)緊密相關(guān),如圖1 所示,假設(shè)如果沒有對DCM2 進(jìn)行枚舉,則DCM1 到GPM1和GPM2 只有一條路徑可走,如果其中任一條出現(xiàn)故障或損壞,則DCM1 無法與其進(jìn)行數(shù)據(jù)通信。而當(dāng)DCM2 也被枚舉過后,從DCM1 到達(dá)GPM1 就有以下幾條路徑可走:1)DCM1—>GPM1,2)DCM1—>DCM2—>GPM1,3)DCM1—>GPM2—>DCM2—>GPM1。而從DCM1 到GPM2 也是有以下幾條路徑可以走1)DCM1—>GPM2,2)DCM1—>DCM2—>GPM2,3)DCM1—>GPM1—>DCM2—>GPM2。通過對DCM2 的冗余枚舉實現(xiàn)了系統(tǒng)在拓?fù)浣Y(jié)構(gòu)上通信路徑的冗余機制。需要注意的是通信路徑冗余僅在DCM1 作為通信主機時才具備條件實現(xiàn),當(dāng)DCM1 出現(xiàn)故障交權(quán)給DCM2 后,上述多條路徑則不再存在,僅保留DCM2—>GPM1 和DCM2—>GPM2 兩條路徑。
本系統(tǒng)常態(tài)工作狀態(tài)下只有一個RapidIO 通信主機,系統(tǒng)的各個路由信息是存儲在交換機的相應(yīng)端口寄存器中,沒有外置存儲器,所以掉電或復(fù)位后路由信息將會丟失。在系統(tǒng)實際運行中,苛求系統(tǒng)不產(chǎn)生復(fù)位的情況是不可能的,也是不切實際的,為了提高系統(tǒng)的健壯性就必須解決系統(tǒng)復(fù)位問題,這里的復(fù)位問題主要指主機熱復(fù)位問題,是指主機在已經(jīng)完成對RapidIO 交換網(wǎng)絡(luò)進(jìn)行枚舉工作后,因為各種因而引起的系統(tǒng)復(fù)位問題(不包括RapidIO 通信從機的復(fù)位問題,RapidIO 通信從機復(fù)位后則必須強制通信主機對其再次進(jìn)行枚舉)。
出現(xiàn)復(fù)位情況的處理與上電時通信主機對整個系統(tǒng)進(jìn)行枚舉的情況是有差異的,因為此時系統(tǒng)內(nèi)部各個RapidIO 通信從機都已被鎖定,此時適應(yīng)于先前初始化的鎖定判斷條件就不再適用于這種情況,而且需要考慮的是這種復(fù)位后的處理也要適用于目前系統(tǒng)的各種類型拓?fù)浣Y(jié)構(gòu)。本文通過改變枚舉初始化流程,預(yù)先讀取交換機和設(shè)備鎖定狀態(tài)寄存器,判斷設(shè)備鎖定狀態(tài),根據(jù)不同狀態(tài)執(zhí)行相應(yīng)鎖定或解鎖操作,若為解鎖操作,則結(jié)合需鎖定值與已寫入值進(jìn)行比較判斷,如果此次需鎖定的值與交換機已經(jīng)寫入的鎖定值是一致的,則認(rèn)為這是主機復(fù)位后再次對其進(jìn)行枚舉。
因為枚舉策略采用遞歸調(diào)用方式,本文通過結(jié)合交換機固定端口號、已分配的設(shè)備ID 值大小以及目前所處于哪一級交換處理例程中進(jìn)行進(jìn)行邊界條件判定。重點解決各種可能出現(xiàn)的組合情況下分級遞歸遍歷邊界條件的設(shè)置,并根據(jù)不同的層級架構(gòu)設(shè)定相應(yīng)地邊界判別條件作為終止循環(huán)條件,避免對已經(jīng)遍歷過的目標(biāo)設(shè)別再次進(jìn)行枚舉導(dǎo)致總線枚舉故障。
本文所設(shè)計RapidIO 總線顯示器通信系統(tǒng),解決了顯示器產(chǎn)品中RapidIO 總線交換組網(wǎng)及系統(tǒng)冗余備份技術(shù)。隨著航空系統(tǒng)的發(fā)展,作為標(biāo)準(zhǔn)的高速串行板級互聯(lián)技術(shù),RapidIO 必將得到越來越廣泛的應(yīng)用,而基于RapidIO 總線組網(wǎng)問題更是實際應(yīng)用中不可避免的,系統(tǒng)的研制為后續(xù)各種組網(wǎng)應(yīng)用提供了堅實的基礎(chǔ),改變了以往數(shù)據(jù)通信單主機模式,極大地提高了航空顯示器系統(tǒng)的可靠性和穩(wěn)定性。