呂 滔,鄧玉嬌,陳蘭英,蔣 陽(yáng)
(中國(guó)核動(dòng)力研究設(shè)計(jì)院 核反應(yīng)堆系統(tǒng)設(shè)計(jì)技術(shù)重點(diǎn)實(shí)驗(yàn)室,成都 610213)
安全級(jí)DCS軟件分為固件及工程組態(tài)兩部分。固件是寫(xiě)入EROM或EEPROM中的程序,是一個(gè)系統(tǒng)最基礎(chǔ)、最底層工作的軟件,應(yīng)用軟件要在固件的基礎(chǔ)上運(yùn)行。本文提到的模塊軟件下裝工作僅針對(duì)固件,也可稱(chēng)為嵌入式軟件。安全級(jí)DCS模塊軟件開(kāi)發(fā)與普通軟件有所不同,如GB 12172《核電廠安全級(jí)系統(tǒng)計(jì)算機(jī)軟件》中,通過(guò)控制和降低軟件復(fù)雜度,確保軟件運(yùn)行行為的確定性[1]。因此,即使當(dāng)前已有很多關(guān)于固件更新的方案[2],均需要經(jīng)過(guò)充分的驗(yàn)證后,才能用于安全級(jí)DCS。安全級(jí)DCS平臺(tái)目前還處于傳統(tǒng)的直接將下載線插入JTAG插座進(jìn)行軟件下裝的方式,基于現(xiàn)有模式,探索一種簡(jiǎn)單高效的方式,提升模塊軟件的下裝效率,保證產(chǎn)品質(zhì)量。
表1 芯片下裝方式Table 1 Chip download method
嵌入式芯片的軟件下裝方式分為ICP(In Circuit Programing)在電路編程、ISP(In System Programing)在系統(tǒng)編程、IAP(In Applicating Programing)在應(yīng)用編程3種。ICP為板級(jí)電路下裝,不需要通信協(xié)議,可通過(guò)電路直接將軟件灌入芯片中;ISP方式需要在芯片內(nèi)部預(yù)先燒錄可執(zhí)行Bootloader程序,這是利用系統(tǒng)級(jí)的通信將軟件傳輸?shù)叫酒鄬?duì)于ICP更方便,但第一次下載會(huì)比較復(fù)雜;IAP是在ISP的基礎(chǔ)上進(jìn)一步優(yōu)化,芯片內(nèi)有可執(zhí)行的應(yīng)用程序。因此,在支持網(wǎng)絡(luò)通信的情況下,可以通過(guò)網(wǎng)絡(luò)獲取軟件,進(jìn)行在線升級(jí)。
這3種下裝方式方便程度不同,但均區(qū)別于傳統(tǒng)的預(yù)先燒錄程序再裝上電路板的方式,可以在芯片焊接到電路板以后再進(jìn)行靈活的編程調(diào)試。本文不再就這3種方式的具體細(xì)節(jié)進(jìn)行展開(kāi),僅對(duì)它們的特點(diǎn)進(jìn)行簡(jiǎn)單的對(duì)比。
IAP方式可支持遠(yuǎn)程在線更新,因其使用方便,目前在商業(yè)領(lǐng)域已廣泛應(yīng)用。如手機(jī)的固件更新,不需要廠家額外提供任何硬件支持,只需要手機(jī)在有網(wǎng)絡(luò)的環(huán)境下進(jìn)行固件下載更新即可。但安全級(jí)DCS的所有軟件均為自主開(kāi)發(fā),受開(kāi)發(fā)周期等因素制約,目前仍使用第1種以實(shí)現(xiàn)最簡(jiǎn)單的ICP方式,即通過(guò)專(zhuān)用下載器連接板上下載口進(jìn)行下裝。
在ICP的下載模式下,每次更新程序時(shí)需要將模塊外殼拆開(kāi),連接板上的JTAG插座進(jìn)行軟件下裝?;诂F(xiàn)有安全級(jí)DCS平臺(tái),其內(nèi)部不止一個(gè)芯片,下載完一個(gè)芯片后還需要切換下載口再進(jìn)行一次下裝,以安全級(jí)DCS某模塊為例,軟件下裝具體流程如圖1所示。
圖1 模塊軟件下裝流程圖Fig.1 Flow chart of module software download
從圖1可以看出,用這種方式進(jìn)行下裝,每次更新程序都需要將模塊拆開(kāi),再挨個(gè)逐一按程序進(jìn)行下裝,這樣手動(dòng)操作復(fù)雜,效率低下。
從實(shí)踐中發(fā)現(xiàn),軟件下裝的很多操作都是簡(jiǎn)單重復(fù)的動(dòng)作,如果可以實(shí)現(xiàn)自動(dòng)化、批量化操作,可以大量節(jié)省時(shí)間。但下載口插拔、切換、外殼拆裝都受到下載接口在模塊內(nèi)部的因素制約,因此下載接口引出是實(shí)現(xiàn)批量化下裝的關(guān)鍵,可以避免模塊外殼拆裝、下載線插拔等非必要的操作。
DCS系統(tǒng)采用模塊化的設(shè)計(jì),從前面插入功能模塊,后面引出信號(hào),模塊故障時(shí)只需將模塊拔出更換即可,不用重新接線。基于此特點(diǎn),模塊的下載口可以通過(guò)后面引出,每次進(jìn)行軟件下載時(shí),不用再進(jìn)行下載線的插拔動(dòng)作,這種方式可以避免拆殼與下載線的插拔,節(jié)省大量時(shí)間,提升下裝穩(wěn)定性。圖2為下載口引出的示意圖。
圖2 下載接口引出示意圖Fig.2 Schematic diagram of download interface lead
針對(duì)多模塊下裝的問(wèn)題,初步提出了3個(gè)方案。方案一為多個(gè)下載器對(duì)多個(gè)芯片進(jìn)行下載,方案二為下載完成后由下位機(jī)自動(dòng)切換下載接口,方案三為JTAG鏈?zhǔn)脚渲肹3]。如圖3所示(實(shí)際模塊內(nèi)部有兩個(gè)相同芯片,示意圖僅展示一個(gè)芯片的情況,下同)。
圖3 批量下裝方案Fig.3 Batch downloading plan
1)多個(gè)下載器
準(zhǔn)備多個(gè)下載器,將下載器一個(gè)個(gè)與芯片連接進(jìn)行下裝,此方案最原始也最簡(jiǎn)潔。但必須使用專(zhuān)用的下載器與下載軟件,且下載器價(jià)格不菲,在幾百到幾千不等,單純地增加下載器需要增加不少成本。僅5張模塊就需要10個(gè)下載器,如此多的下載器纏在一起,線路上容易混雜,出現(xiàn)問(wèn)題時(shí)需要逐個(gè)進(jìn)行排查,軟件操作上也會(huì)變得復(fù)雜,可能會(huì)出現(xiàn)部分模塊軟件更新遺漏。
2)切換下載口
同一時(shí)間只能對(duì)一個(gè)芯片進(jìn)行下裝,下裝成功后切換到下一個(gè)芯片繼續(xù)下載,中途無(wú)插拔模塊的等待時(shí)間。此方案不能直接提升太多的效率,需要單獨(dú)開(kāi)發(fā)專(zhuān)用的下位機(jī)軟、硬件與上位機(jī)軟件進(jìn)行支持。但因?yàn)椴挥檬謩?dòng)干預(yù),中途可以騰出時(shí)間做標(biāo)識(shí)整理等其他相關(guān)工作,也可一人操作多臺(tái)設(shè)備來(lái)提升效率。此方案的缺點(diǎn)為有下載口切換失敗的風(fēng)險(xiǎn),開(kāi)發(fā)工裝時(shí)需要做好切換成功確認(rèn)的反饋機(jī)制,保證下裝的穩(wěn)定性。
3)JTAG鏈?zhǔn)脚渲?/p>
現(xiàn)大多數(shù)芯片均支持JTAG接口下裝軟件,可將芯片的JTAG以菊花鏈的形式連接起來(lái)拓展,只需通過(guò)一個(gè)接口便可以對(duì)所有的芯片進(jìn)行軟件下裝,下裝時(shí)接線數(shù)量少,簡(jiǎn)潔美觀。雖然串聯(lián)會(huì)不穩(wěn)定,但下裝失敗即所有模塊下裝失敗,省去了逐一進(jìn)行下裝結(jié)果確認(rèn)的步驟,反而有利于下裝結(jié)果的判斷。它的缺點(diǎn)是JTAG鏈必須保持完整,且JTAG鏈不能無(wú)限擴(kuò)展。
經(jīng)過(guò)綜合比對(duì),決定嘗試最為簡(jiǎn)單高效、開(kāi)發(fā)難度低的JTAG鏈?zhǔn)脚渲梅桨?。選用此方案需要對(duì)JTAG鏈可擴(kuò)展數(shù)量進(jìn)行確認(rèn),并且需要在模塊數(shù)量發(fā)生變化時(shí)同樣保持JTAG鏈路的完整性。
以安全級(jí)DCS平臺(tái)某模塊為例,每個(gè)模塊內(nèi)有兩個(gè)EPM2210芯片,嘗試以5張模塊共10個(gè)芯片進(jìn)行菊花鏈串聯(lián)。經(jīng)過(guò)測(cè)試后,5張模塊可以穩(wěn)定進(jìn)行軟件下裝,基本能滿(mǎn)足軟件下裝效率提升的要求。對(duì)于JTAG鏈完整問(wèn)題可采用手動(dòng)切換的方式,因?yàn)樯a(chǎn)環(huán)節(jié)一般為批量下裝,模塊數(shù)量基本都會(huì)大于5張,所以切換頻率不高,對(duì)軟件下裝影響不大。如果需要集成自動(dòng)化,可以考慮換成模擬開(kāi)關(guān)切換,需要注意的是選擇模擬開(kāi)關(guān)時(shí)要關(guān)注開(kāi)關(guān)內(nèi)阻,內(nèi)阻過(guò)大會(huì)影響信號(hào)傳輸。
批量下裝方案主要包括硬件與軟件兩部分。硬件上只需要將下載接口按線序連接好即可,需要做的設(shè)計(jì)較少;軟件上需要做一個(gè)界面進(jìn)行簡(jiǎn)單配置,不直接使用原生燒錄軟件進(jìn)行操作,避免了復(fù)雜的操作,保證下裝操作的正確性。
3.2.1 硬件設(shè)計(jì)
JTAG(Joint Test Action Group,聯(lián)合測(cè)試行動(dòng)組)是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議(IEEE 1149.1兼容)。標(biāo)準(zhǔn)的JTAG接口是4線——TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。在使用時(shí),將TMS、TCK并聯(lián)連接接口,TDI、TDO是串行數(shù)據(jù)接口,下載時(shí)將所有芯片的TDI、TDO串聯(lián)起來(lái)即可完成菊花鏈的配置。
由于JTAG鏈必須保持完整,所以將10個(gè)芯片進(jìn)行串聯(lián)連接后,每次下裝至少需要5張模塊,否則鏈路不完整,無(wú)法下裝。根據(jù)生產(chǎn)實(shí)際情況,一般生產(chǎn)過(guò)程為批量軟件下裝,一般工單數(shù)量都會(huì)大于5張,所以切換頻率并不高,因此直接采用多檔位的旋鈕開(kāi)關(guān)方便手動(dòng)切換,模塊數(shù)量變化時(shí)通過(guò)旋鈕即可輕松切換,不用重新進(jìn)行接線。連接示意圖如圖4所示,根據(jù)模塊數(shù)量(x)的變化,將S觸點(diǎn)與Dx連接,即可使JTAG鏈路完整。
圖4 下載接口引出示意圖Fig.4 Schematic diagram of download interface lead
3.2.2 軟件設(shè)計(jì)
1)TCL腳本
如果直接使用原生燒錄軟件進(jìn)行下裝操作,每次都需要根據(jù)芯片數(shù)量重新配置下載文件,存在操作失誤的隱患。EPM2210芯片下載使用的軟件為QuartusⅡ[4],該軟件支持TCL(Tool Command Language)控制[5],因此可以使用腳本對(duì)QuartusⅡ進(jìn)行操作,從而實(shí)現(xiàn)軟件下裝工作。
TCL是一種非常簡(jiǎn)單易學(xué)的語(yǔ)言,能夠快速上手,幾乎能在所有的環(huán)境下運(yùn)行,通用性好,因此用來(lái)編寫(xiě)一些短小的腳本語(yǔ)言非常適用。
QuartusⅡ一段關(guān)于下裝的指令如下:
quartus_pgm.exe -c USB-Blaster[0]-m JTAG -o"PV;%1%"。
各指令的含義為:
-c<jtagserver cable number>:選擇下載器編號(hào)。
-m<programming mode>:下載模式。
-o<programming operation> :下載操作。
"PV;%1%":選擇文件必須選一個(gè)參數(shù);P<Program>:下載;V<Verify>:校驗(yàn);%1為命令行的傳遞參數(shù),最多支持0~9,共10個(gè)參數(shù)的輸入,此處需要輸入下裝文件路徑。如果需要在JTAG模式下進(jìn)行多張模塊下裝,只需要將-o "PV;%1%"指令進(jìn)行復(fù)制粘貼即可。
將指令編輯好后,存為擴(kuò)展名“.BAT”的腳本文件即可直接運(yùn)行,但實(shí)際使用時(shí)會(huì)根據(jù)下裝文件的更改,腳本也需要隨之修改。直接修改腳本命令存在改錯(cuò)命令等情況,操作不方便。因此,還需要開(kāi)發(fā)一個(gè)可視化界面,固定不變的指令存入腳本,需要配置的信息由可視化界面完成,并下發(fā)給腳本。
2)可視化界面
界面設(shè)計(jì)采用QT,QT擁有友好豐富的界面庫(kù),用戶(hù)可以從工具欄直接拖拽界面元素直接使用,而不用通過(guò)代碼去實(shí)現(xiàn),節(jié)省了大量的開(kāi)發(fā)時(shí)間,可以快速開(kāi)發(fā)軟件。
界面軟件向腳本傳遞參數(shù)部分代碼如下所示:
QProcess*m_process;
QStringstr=QDir::currentPath()+"/Down/Script";//腳本路徑
m_process->setWorkingDirectory(str);
QStringcommand=QString("%1/Altera%2.bat %3")
.arg(str)
.arg(i)
.arg(U_File);
if(m_process)
{
m_process->start(command);
m_process->waitForFinished(TIMEOUT);
}
這里根據(jù)下載芯片數(shù)量不同,分別保存為“Altera1~Altera5”的腳本,上位機(jī)根據(jù)下載數(shù)量i選擇不同的腳本進(jìn)行調(diào)用,然后將下載文件“U_File”傳入腳本進(jìn)行下載。完成后的操作界面如圖5所示。
圖5 下裝操作界面Fig.5 Download operation interface
經(jīng)過(guò)軟件優(yōu)化,簡(jiǎn)化了操作,可以有效避免軟件下裝過(guò)程中過(guò)多操作帶來(lái)的人因失誤,同時(shí)在一定程度上提高軟件下裝的效率。工裝搭建完成后,經(jīng)過(guò)一段時(shí)間的試用,驗(yàn)證了其下裝功能的穩(wěn)定性,在使用中明顯提高了效率。改進(jìn)后以5張批量下裝,統(tǒng)計(jì)對(duì)比5張模塊所用時(shí)間見(jiàn)表2。
由表2可見(jiàn),經(jīng)過(guò)改進(jìn),模塊的軟件下裝效率得到了顯著提升。模塊不再進(jìn)行拆裝,不光節(jié)省了大量的時(shí)間,還減少了拆裝過(guò)程對(duì)模塊的損失,提升了模塊軟件升級(jí)過(guò)程中的產(chǎn)品質(zhì)量。
表2 改進(jìn)前后下裝對(duì)照Table 2 Comparison of download before and after improvement
安全級(jí)DCS出于對(duì)安全問(wèn)題等因素的考慮,其技術(shù)會(huì)有一定的局限性,有時(shí)會(huì)為了穩(wěn)定性舍棄一定的便利性。因此,基于現(xiàn)有的平臺(tái)技術(shù)特點(diǎn),尋求簡(jiǎn)單可行的方案,低成本、高效地開(kāi)發(fā)過(guò)渡性工裝以解決安全級(jí)DCS模塊軟件下裝效率低、風(fēng)險(xiǎn)大的問(wèn)題,對(duì)安全級(jí)DCS產(chǎn)品生產(chǎn)效率提升與質(zhì)量保證有著積極的意義。因?yàn)槠脚_(tái)模塊型號(hào)眾多,各自使用的芯片不盡相同,軟件下裝方式也不完全相同,現(xiàn)只針對(duì)其中一種數(shù)量最大的模塊進(jìn)行試驗(yàn),在適用穩(wěn)定后,還會(huì)逐步探索,實(shí)現(xiàn)對(duì)所有模塊軟件的批量化下裝。