李斌 武健
摘要:本文提出一種FC網(wǎng)絡(luò)設(shè)備可編程邏輯遠(yuǎn)程在線升級(jí)維護(hù)方法,通過(guò)在FC網(wǎng)絡(luò)設(shè)備中增加代理邏輯和軟件,由控制端基于自定義交互控制協(xié)議完成代理端FC設(shè)備可編程邏輯文件的固化存儲(chǔ)。以Xilinx Virtex5 芯片為例的系統(tǒng)設(shè)計(jì)證明了本方法可行并且高效,一個(gè)控制端能控制相連的所有FC設(shè)備并行、快速地維護(hù)可編程邏輯,有效提高了系統(tǒng)維護(hù)效率,降低了維護(hù)成本。
關(guān)鍵詞:FC網(wǎng)絡(luò) 可編程邏輯 升級(jí)
引言
面向綜合化模塊化的航空電子系統(tǒng)通常采用分布式、開(kāi)放體系架構(gòu),并通過(guò)高速光纖通道(FC, Fibre Channel)交換網(wǎng)絡(luò)實(shí)現(xiàn)資源、信息共享和系統(tǒng)功能綜合。機(jī)載FC網(wǎng)絡(luò)系統(tǒng)由一組網(wǎng)絡(luò)終端設(shè)備和網(wǎng)絡(luò)交換設(shè)備構(gòu)成,網(wǎng)絡(luò)終端設(shè)備和網(wǎng)絡(luò)交換設(shè)備統(tǒng)稱為FC網(wǎng)絡(luò)設(shè)備。其中,F(xiàn)C網(wǎng)絡(luò)交換設(shè)備是FC交換網(wǎng)絡(luò)系統(tǒng)的核心部件,所有FC網(wǎng)絡(luò)終端設(shè)備通過(guò)物理鏈路與網(wǎng)絡(luò)交換設(shè)備相連,網(wǎng)絡(luò)終端設(shè)備作為機(jī)載系統(tǒng)傳感、計(jì)算、作動(dòng)等功能設(shè)備的通信接口為其提供通信服務(wù)。
通常情況下,為滿足航空電子系統(tǒng)需求變化、功能升級(jí)或優(yōu)化配置等要求,F(xiàn)C網(wǎng)絡(luò)設(shè)備的主要功能采用現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA, Field–Programmable Gate Array)實(shí)現(xiàn)。傳統(tǒng)的FPGA升級(jí)維護(hù)采用JTAG接口連接FPGA將新邏輯燒寫(xiě)到PROM中完成,但是這種方式存在諸多不足,首先,操作不方便,在機(jī)載環(huán)境下,各種功能模塊都被裝進(jìn)機(jī)箱里,如果需要對(duì)其中邏輯進(jìn)行升級(jí)就必須拆開(kāi)機(jī)箱取出模塊,過(guò)程繁瑣而且容易造成設(shè)備損壞;其次,編程速度慢,JTAG編程速度較慢,一般200T的邏輯即使在選擇最高速率時(shí)仍然需要大于10分鐘;不能并行操作,若要同時(shí)升級(jí)多個(gè)FC設(shè)備的可編程邏輯,則需要多個(gè)FPGA仿真器及相應(yīng)的軟件環(huán)境。由于以上原因,對(duì)于上百個(gè)節(jié)點(diǎn)機(jī)構(gòu)成的FC網(wǎng)絡(luò),若采用JTAG接口升級(jí)其中所有FC設(shè)備邏輯,則非常耗時(shí)耗力。
本文提出一種遠(yuǎn)程升級(jí)FC設(shè)備可編程邏輯的方法,為FC設(shè)備邏輯升級(jí)提供除通過(guò)JTAG升級(jí)的另外一種途徑,支持不拆卸硬件、快速、并行升級(jí)多個(gè)FC設(shè)備的可編程邏輯。
1 系統(tǒng)組成
為實(shí)現(xiàn)FC設(shè)備的可編程邏輯遠(yuǎn)程升級(jí)維護(hù),構(gòu)建如圖 1所示的系統(tǒng),該系統(tǒng)由一個(gè)控制端和相連的FC設(shè)備的代理端組成,代理端和控制端通過(guò)自定義的交互協(xié)議基于FC網(wǎng)絡(luò)或者以太網(wǎng)完成交互。
2 代理端
代理端由代理邏輯和代理軟件兩部分組成。代理邏輯是在主要功能邏輯中增加的用于PROM訪問(wèn)控制的邏輯功能模塊;代理軟件作為FC設(shè)備驅(qū)動(dòng)軟件的一部分運(yùn)行于嵌入式目標(biāo)機(jī)上,它接收控制端發(fā)送的邏輯文件,并依據(jù)其控制指令實(shí)現(xiàn)邏輯文件編程。
2.1代理邏輯
如圖 2所示為代理邏輯示意圖。在FC網(wǎng)絡(luò)設(shè)備的主要功能邏輯中增加PROM訪問(wèn)代理邏輯,兩部分邏輯共用主機(jī)接口資源。代理邏輯包括部分主機(jī)接口邏輯和PROM控制接口邏輯,其中,主機(jī)接口可以是PCI/PCIe或者RapidIO等常用總線接口。代理邏輯用于執(zhí)行代理軟件下發(fā)的PROM讀寫(xiě)操作。由于邏輯在運(yùn)行時(shí)是并行進(jìn)行的,所以加入代理邏輯不會(huì)對(duì)主要功能邏輯產(chǎn)生影響。
在代理軟件訪問(wèn)PROM過(guò)程中,代理邏輯解析主機(jī)接口的命令,產(chǎn)生讀或者寫(xiě)操作至PROM訪問(wèn)接口,并在特定的時(shí)間點(diǎn)上撤銷命令結(jié)束操作。如果是讀操作還需要在特定的時(shí)間點(diǎn)上鎖存總線上的數(shù)據(jù)并傳遞給主機(jī)接口。PROM讀寫(xiě)訪問(wèn)對(duì)各個(gè)信號(hào)跳變的時(shí)間有嚴(yán)格要求。為了保證正確的讀寫(xiě)訪問(wèn),設(shè)計(jì)必須滿足其要求的時(shí)序。
2.2代理軟件
代理軟件運(yùn)行于嵌入式目標(biāo)機(jī)處理器上,與控制端軟件通過(guò)網(wǎng)絡(luò)進(jìn)行信息交互,依據(jù)控制軟件的命令完成PROM編程。
代理軟件首先接收控制端發(fā)送的邏輯文件記錄行,通過(guò)解析記錄行獲取有效數(shù)據(jù)和目標(biāo)地址,然后調(diào)用相應(yīng)的RPOM訪問(wèn)驅(qū)動(dòng)接口,將有效數(shù)據(jù)寫(xiě)入目標(biāo)地址,即可實(shí)現(xiàn)邏輯文件的更新。
與一般FLASH相似,對(duì)PROM的編程也遵循相應(yīng)的命令序列。以Virtex-5系列PROM手冊(cè)中詳細(xì)描述了PROM讀、擦除、編程等功能的命令序列要求,依此可實(shí)現(xiàn)PROM的訪問(wèn)控制驅(qū)動(dòng)接口,具體實(shí)現(xiàn)不再贅述。
記錄行是指邏輯文件(*.mcs)中的一行記錄,其數(shù)據(jù)格式分為32位和16位兩種,16位格式支持20位段地址空間,32位支持32位線性地址空間。Virtex-5系列FPGA使用的是32位格式。每個(gè)記錄(行)包括數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)類型、地址、有效數(shù)據(jù)以及校驗(yàn)和信息。
圖 3所示代理軟件中PROM編程流程圖,其步驟如下:
a.等待接收邏輯(*.mcs)文件的第i行記錄;
b.依據(jù)文件格式定義解析第i行記錄;
c.若記錄類型為04,則更新基址,轉(zhuǎn)步驟(a),等待接收下一行記錄,(i=i+1);
d.若記錄類型為00,則根據(jù)當(dāng)前的基址計(jì)算地址,寫(xiě)入數(shù)據(jù)后進(jìn)行行記錄校驗(yàn),轉(zhuǎn)步驟(a),讀取下一行記錄,(i=i+1);
e.若類型為01,則為文件結(jié)束標(biāo)識(shí),編程結(jié)束。
f.其中,數(shù)據(jù)的寫(xiě)入地址由基地址和偏移兩部分構(gòu)成,04類型記錄為當(dāng)前基地址,00記錄類型為當(dāng)前偏移,由兩部分相加即可得到實(shí)際的地址。另外,文件解析所得地址為字節(jié)地址,即其以字節(jié)為單位進(jìn)行編址,而PROM地址以字(16位)為單位進(jìn)行編址,因此需要注意字節(jié)地址和字地址的轉(zhuǎn)換。
3 控制端
控制端是一個(gè)運(yùn)行在PC機(jī)上的軟件,具有圖形化用戶界面的軟件,它通過(guò)FC網(wǎng)絡(luò)或者以太網(wǎng)將邏輯(*.mcs)文件傳輸至代理端,并通過(guò)相應(yīng)的交互協(xié)議控制代理端軟件實(shí)現(xiàn)FC節(jié)點(diǎn)機(jī)FPGA邏輯遠(yuǎn)程升級(jí)。一個(gè)控制端能同時(shí)控制網(wǎng)絡(luò)中所有FC目標(biāo)設(shè)備進(jìn)行可編程邏輯升級(jí)維護(hù)。
4 交互協(xié)議
控制端通過(guò)FC網(wǎng)絡(luò)或者以太網(wǎng)將可編程邏輯文件傳輸至代理端。其處理流程如下。圖 4所示為控制端與代理端之間的交互流程。
a.控制軟件首先發(fā)起邏輯升級(jí)請(qǐng)求,請(qǐng)求中攜帶軟件版本信息和編程密鑰;
b.代理軟件收到邏輯升級(jí)請(qǐng)求后,檢查版本信息是否匹配,編程密鑰是否正確,并將結(jié)果反饋至控制軟件;
c.版本及密鑰正確時(shí)控制軟件啟動(dòng)編程,否則結(jié)束流程;
d.控制軟件讀取待更新邏輯文件的第i行記錄并發(fā)送至代理軟件;
e.代理軟件收到第i行記錄后進(jìn)入如圖2所示的編程流程,并將結(jié)果反饋至控制端軟件;
f.控制軟件檢查當(dāng)前記錄行編程結(jié)果,如果正確則轉(zhuǎn)(d),i=i+1;否則顯示錯(cuò)誤信息,并退出;
g.當(dāng)全部記錄行編程結(jié)束后進(jìn)入校驗(yàn)環(huán)節(jié),控制端軟件發(fā)送第i行記錄校驗(yàn)請(qǐng)求;
h. 代理軟件收到第i行校驗(yàn)請(qǐng)求后依據(jù)計(jì)算所得偏移地址和長(zhǎng)度調(diào)用驅(qū)動(dòng)接口讀取已完成編程的數(shù)據(jù),并將數(shù)據(jù)發(fā)送反饋至控制軟件;
i. 控制軟件收到第i行數(shù)據(jù)后與第i行記錄文件進(jìn)行數(shù)據(jù)比對(duì),檢查是否一致,比對(duì)正確時(shí)轉(zhuǎn)步驟(g),否則顯示錯(cuò)誤信息并退出;
j.當(dāng)全部記錄行校驗(yàn)結(jié)束后,控制軟件發(fā)送結(jié)束請(qǐng)求;
k.代理軟件收到結(jié)束請(qǐng)求后,釋放相應(yīng)資源并回復(fù)應(yīng)答;
l.邏輯升級(jí)結(jié)束。
5 結(jié)束語(yǔ)
提出一種遠(yuǎn)程升級(jí)FC網(wǎng)絡(luò)設(shè)備可編程邏輯的方法,為FC網(wǎng)絡(luò)設(shè)備邏輯升級(jí)提供除通過(guò)JTAG升級(jí)的另外一種途徑。該方法無(wú)需拆卸硬件和額外的輔助工具,具有操作簡(jiǎn)單、編程速度快、可支持并行升級(jí)等優(yōu)點(diǎn)??刂栖浖赏瑫r(shí)控制全網(wǎng)絡(luò)FC設(shè)備可編程邏輯升級(jí),極大地提升了升級(jí)維護(hù)效率。
參考文獻(xiàn)
[1]牛文生綜合化航空電子系統(tǒng)對(duì)軟件開(kāi)發(fā)技術(shù)的挑戰(zhàn)[J],航空計(jì)算技術(shù),2008,38(1):1-6.
[2]Fibre Channel: Framing and Signaling[S]. New York: American National Standards Institute, 2003.
[3]孔璇,李斌.一種基于海明碼的PROM文件系統(tǒng)軟件校驗(yàn)方法[J],電腦知識(shí)與技術(shù),2016,12(6):78-81.