黃彥勃,魯興舉,郭鴻武
(國防科技大學(xué) 機電工程與自動化學(xué)院,湖南 長沙 410073)
?
基于多次加載方案的嵌入式飛控軟件在線升級方法
黃彥勃,魯興舉,郭鴻武
(國防科技大學(xué) 機電工程與自動化學(xué)院,湖南 長沙 410073)
在以DSP為核心的飛行器控制系統(tǒng)使用和維護過程中,經(jīng)常需要對其嵌入式軟件進行在線升級。通過JTAG接口進行軟件升級的方式在飛控組件裝機后變得非常不方便。研究了通過串行接口進行飛控軟件在線升級的方法,基于DSP多次加載方案和雙重校驗機制在TMS320C6713B DSP系統(tǒng)上實現(xiàn)了飛控代碼遠(yuǎn)距離、可靠的燒錄和自啟動,驗證了方法的有效性。
DSP;飛控軟件;串行接口;多次加載方案;在線升級
現(xiàn)代飛行器所要完成的任務(wù)越來越復(fù)雜,其飛行控制方式由遙控飛行向自主飛行和智能飛行發(fā)展,對飛行控制系統(tǒng)也提出了多功能、低成本、高精度和小型化的設(shè)計要求。DSP(Digital Signal Processor)作為一種高性能、低功耗、實時性高且支持高級語言開發(fā)的處理器,成為飛行控制計算機的首選[1]。以DSP為核心的飛控軟件開發(fā)過程中,常常使用仿真器通過JTAG(Joint Test Action Group )接口進行在線調(diào)試與加載。采用這種方法,程序載入速度快、連線簡單,在分系統(tǒng)調(diào)試和各系統(tǒng)功能驗證時非常方便。但在飛控系統(tǒng)整機試驗、外場試驗等環(huán)境下就暴露了它的弊端:由于JTAG信號是TTL電平,隨著傳輸距離的增加,其信號變形會加劇,這就要求仿真器與DSP必須近距離連接。若產(chǎn)品已經(jīng)組裝好,就不得不進行拆分,近距離接上仿真器才能實現(xiàn)軟件調(diào)試與上傳升級。而拆分產(chǎn)品這一過程會給整個系統(tǒng)帶來很多隱患,所以簡化這一過程,降低軟件調(diào)試與升級的風(fēng)險顯得尤為重要。此外,對于已經(jīng)交付的飛控系統(tǒng),也會有在線升級軟件的需求。
針對DSP嵌入式軟件在線升級這一需求,人們提出了多種可行的解決方案,包括通過串口[2-3]、PCI總線[4]、以太網(wǎng)[5]和USB總線[6]等接口進行DSP軟件的遠(yuǎn)程更新。文獻[7]中介紹了C6000系列DSP的二次加載方案,著重分析了各類DSP在二次加載時的方式與方法。文獻[8]中進行了TMS320C641X系列DSP引導(dǎo)方法的研究,著重探討了ROM引導(dǎo)與HPI(Host Port Interface)引導(dǎo)。文獻[9]針對DSP在線燒寫程序通用性不強的現(xiàn)象,從存儲空間配置等方面出發(fā)設(shè)計了具有可快速移植的在線燒寫程序。目前通過串口燒寫用戶程序存在一些技術(shù)限制:① 駐留程序代碼容量受限,導(dǎo)致功能有限,比如有的無法對燒錄進入FLASH中數(shù)據(jù)的正確性進行實時反饋;有的在結(jié)束時校驗了程序體積,無法實時計算每一幀的校驗和;② DSP片內(nèi)資源有限,導(dǎo)致在串口通信的實現(xiàn)上比較繁瑣等。
本文針對現(xiàn)有技術(shù)的不足,在DSP+FPGA的硬件架構(gòu)下,基于多次加載方案設(shè)計了與飛控軟件獨立的駐留升級軟件;基于雙重校驗機制實現(xiàn)了飛控軟件的串口在線升級。
1.1 硬件組成
本文使用TI公司的TMS320C6713B DSP處理器(以下簡稱C6713),通過數(shù)據(jù)、地址總線完成與FPGA的通信,是實現(xiàn)系統(tǒng)數(shù)模轉(zhuǎn)換、數(shù)據(jù)加工和用戶控制算法程序運行的硬件平臺。由于C6713自帶的接口資源不豐富,但具有很強的可擴展性,所以使用FPGA實現(xiàn)外圍接口的擴展設(shè)計出DSP+FPGA的硬件結(jié)構(gòu)。FPGA使用XiLinx公司的XC3S1000-4FT256I(以下簡稱XC3S1000),利用其硬件資源實現(xiàn)對C6713的硬件資源擴展。由于C6713上沒有提供異步串行接口,只有同步串行接口,因而使用FPGA建立UART(通用異步串行接口)與地面站通信,然后通過數(shù)據(jù)、地址總線完成DSP對FLASH存儲器的讀寫操作?;诖诘娘w控軟件上傳系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 基于串口的飛控軟件上傳系統(tǒng)結(jié)構(gòu)
1.2 軟件結(jié)構(gòu)設(shè)計
目前有2種實現(xiàn)方案:① 將支持軟件下載的模塊與飛控軟件的功能模塊合并在一個程序中,通過設(shè)置飛控系統(tǒng)的狀態(tài)來控制軟件的功能;② 將上述2個模塊分置于2個程序,通過運行指針跳轉(zhuǎn)實現(xiàn)程序切換。
由于飛控軟件自身具有多功能性、高集成性和高穩(wěn)定性的特點,所以在飛控軟件設(shè)計時應(yīng)盡可能保持飛控軟件功能的專用性。因此,為保證飛控軟件的穩(wěn)定性以及軟件上傳的可靠性采用駐留軟件與飛控軟件相獨立設(shè)計的方案。駐留軟件主要功能是實現(xiàn)飛控軟件代碼的接收及燒錄功能。為確保燒錄可靠性,在燒錄模塊中采用2次校驗機制。駐留軟件結(jié)構(gòu)如圖2所示。
圖2 駐留軟件結(jié)構(gòu)
飛控軟件的功能主要體現(xiàn)在2個方面:① 飛行控制,使飛行器按照預(yù)先設(shè)定的姿態(tài)角、高度、航線和航向等信息來改變飛機的飛行姿態(tài)和航跡,并使飛行器在空中保持穩(wěn)定的飛行姿態(tài)和航跡;② 飛行管理,主要完成飛行參數(shù)的采集、導(dǎo)航數(shù)據(jù)計算、故障的診斷、應(yīng)急情況的處理、無線通信、外部任務(wù)設(shè)備的管理和控制等工作[10]。飛控軟件結(jié)構(gòu)如圖3所示。
圖3 飛控軟件結(jié)構(gòu)
2.1 基于多次加載方案的嵌入式軟件在線升級原理
以TI DSP C6713B為例,其加載方式有主機(Host)加載、仿真(Emulation)加載和EMIF加載3種。主機加載是由外部主機通過HPI初始化CPU的存儲空間,在完成初始化工作之后通過HPI中斷結(jié)束導(dǎo)引過程,CPU退出復(fù)位狀態(tài)[11]。仿真加載是通過仿真器來設(shè)置DSPINT,使CPU在0地址處執(zhí)行命令。EMIF加載是通過EDMA控制器將外部ROM中的一段固定大小的代碼(通常為Bootloader)復(fù)制到內(nèi)部RAM中加載完成后CPU開始從0地址執(zhí)行。
由于駐留軟件和飛控軟件均存儲在外部ROM中,通過各自的Bootloader實現(xiàn)自啟動,因此,本文在EMIF加載方式的基礎(chǔ)上,擴展形成多次加載方式。加載啟動過程如圖4所示。
圖4 基于多次加載的飛控軟件啟動過程
具體步驟如下:① 使用DSP燒寫軟件將DSP駐留程序燒寫進FLASH,待DSP下電重啟復(fù)位后,DSP自動搬移FLASH始端的駐留軟件的Bootloader至RAM中,然后Bootloader再將存儲在FLASH中的駐留程序搬移至DSP內(nèi)部RAM中運行,完成駐留軟件的啟動;② 駐留軟件等待用戶上傳飛控軟件,若在45 s內(nèi)收到從地面站發(fā)來的飛控軟件代碼則駐留程序啟動燒錄功能,將上傳的飛控軟件燒寫進FLASH中,若沒有收到則自動跳轉(zhuǎn)至指定的飛控軟件的Bootloader起始地址執(zhí)行;③ 通過飛控軟件Bootloader啟動飛控軟件。若沒有飛控程序可以執(zhí)行則CPU進入IDLE狀態(tài)。若系統(tǒng)已有飛控程序且無需上傳新的飛控程序時可通過PC端發(fā)送啟動飛控程序的指令直接運行飛控程序不在需要等待45 s。
2.2 存儲空間分配
多次加載方案要求在FLASH中存儲2個軟件,分別為DSP駐留軟件和飛控軟件。2個軟件燒錄的方式如下:首先通過仿真器將駐留程序燒寫至FLASH地址0x90000000處,給駐留軟件預(yù)留的空間為256 K即對應(yīng)FLASH地址為0x90000000-0x9003FFFF;通過駐留軟件燒錄的飛控軟件代碼儲存在FLASH中的地址為0x90040000-0x901DFFFF。程序在加載時先將駐留程序搬移CPU零地址處運行,駐留程序的BOOT段位于RAM的零地址,中斷向量表位于0x00000400處,飛控軟件的BOOT段位于0x00005000處,中斷向量表位于0x00005400處。故飛控軟件向DSP搬移的起始地址為0x00005400。具體FLASH與片內(nèi)RAM的使用情況如圖5和圖6所示。
圖5 FLASH存儲空間使用情況
圖6 DSP片內(nèi)RAM使用情況
2.3 DSP在線升級串口設(shè)計
飛控軟件在線升級串口設(shè)計包括物理鏈路層和通訊協(xié)議層兩方面內(nèi)容。
本文的飛控系統(tǒng)通過RS-422接口與地面站進行通訊。具體通信方式采用全雙工模式,傳輸波特率為921.6 kbps,幀長度為210 bytes,發(fā)送端和接收端之間采用光耦隔離。
在設(shè)計通信協(xié)議時,考慮到數(shù)據(jù)可能受到干擾,必須采取相應(yīng)的措施保證駐留軟件接收和燒錄飛控程序代碼時的可靠性。
干擾大致可分為2類:
① 通信傳輸過程中的干擾;
② 飛控計算機可能受到的電磁干擾。
由干擾產(chǎn)生的錯誤類型則大致分為3類:
① 隨機錯誤,即代表傳輸信息的二進制碼發(fā)生“0”“1”相互反轉(zhuǎn),且概率相等,錯誤位置隨機,錯誤發(fā)生事件相互獨立;
② 突發(fā)錯誤,特點為錯誤的二進制碼之間具有較強的關(guān)聯(lián)性,一旦突發(fā),若干位將一起出錯,存儲器錯誤具有該特征;
③ 單向錯誤,即每個二進制碼元發(fā)生“0”“1”反轉(zhuǎn)的概率相等,但這2種錯誤不在同一組數(shù)據(jù)中同時發(fā)生[12]。
為確保地面站與飛控系統(tǒng)之間的通信可靠性,本文設(shè)計了雙重校驗機制,具體如下:
① 上傳飛控程序由地面站單向發(fā)起。地面站每發(fā)送一個幀到飛控系統(tǒng)后等待飛控系統(tǒng)反饋數(shù)據(jù)并進行比對,校驗正確后地面站再發(fā)送下一幀數(shù)據(jù)。如果數(shù)據(jù)有誤則重發(fā)該幀。
② 飛控系統(tǒng)在確認(rèn)數(shù)據(jù)幀接收正確后開始數(shù)據(jù)幀燒寫,并在完成每一幀的燒寫之后,進行回讀和比對,然后向地面站反饋數(shù)據(jù)燒寫狀態(tài)。一旦狀態(tài)異常則地面站重發(fā)該幀數(shù)據(jù),飛控系統(tǒng)再次進行接收和燒寫。
2.4 DSP駐留軟件詳細(xì)設(shè)計
駐留軟件的任務(wù)是:從地面站接收命令以及飛控代碼文件;對接收到的代碼進行正確性校驗,完成飛控代碼的燒錄;控制CPU向飛控軟件跳轉(zhuǎn)。
DSP駐留軟件設(shè)計的難點在于:① 完成大規(guī)模數(shù)據(jù)穩(wěn)定傳輸?shù)耐瑫r,保證FLASH燒寫的正確性;② 實現(xiàn)從駐留軟件到飛控軟件的跳轉(zhuǎn)并實現(xiàn)飛控軟件的自啟動,跳轉(zhuǎn)方式包括計時自動跳轉(zhuǎn)與授命跳轉(zhuǎn);③ 盡量壓縮程序體積,給飛控軟件留有更大的空間。
如前所述,駐留軟件采用了與飛控軟件分離設(shè)計的方案,其具體實現(xiàn)為:在駐留程序啟動后首先判斷是否收到燒寫用戶程序的指令。收到指令后駐留程序進入燒寫模式,首先將收到的數(shù)據(jù)進行校驗并向地面站報文;其次為了提高傳輸效率在燒寫第一幀數(shù)據(jù)前先將FLASH扇區(qū)進行擦除以方便后續(xù)幀的燒寫;最后將接收到的校驗正確的每一幀數(shù)據(jù)燒寫進FLASH中,并從FLASH中回讀與接收到的原始數(shù)據(jù)進行校驗,并向地面站報文。駐留軟件根據(jù)通信協(xié)議中的結(jié)束幀來判斷用戶程序上傳結(jié)束。2次校驗均根據(jù)通信協(xié)議建立數(shù)據(jù)幀錯誤重發(fā)機制,最多允許一幀數(shù)據(jù)連續(xù)錯誤3次。飛控軟件在線升級流程圖如圖7所示。
跳轉(zhuǎn)模塊用于實現(xiàn)從駐留軟件向飛控軟件跳轉(zhuǎn)。常見的實現(xiàn)跳轉(zhuǎn)功能的方式有2種:① 通過設(shè)計外部開關(guān)量來實現(xiàn)遠(yuǎn)程加載模式和正常運行模式的切換[2];② 通過設(shè)計軟件時間窗來實現(xiàn)程序的跳轉(zhuǎn)。方案1由于存在占用有限I/O資源以及在應(yīng)用中可能出現(xiàn)誤操作等風(fēng)險本文將采用方案2中的軟件時間窗跳轉(zhuǎn)方案。該功能的具體實現(xiàn)方案為:等待45 s,若在45 s內(nèi)收到執(zhí)行飛控軟件命令則直接跳過剩余時間直接運行飛控軟件,或是在45 s內(nèi)收到從地面站傳來的飛控軟件則執(zhí)行上傳功能;如果在45 s內(nèi)沒有收到任何指令,則運行飛控軟件。運行程序時將飛控軟件的Bootloader搬入DSP并將CPU運行指針指向用戶Bootloader程序搬入后的首地址。軟件實現(xiàn)時使用了C語言和匯編語言的混合編程。
圖7 飛控軟件在線升級流程
2.5 地面站軟件設(shè)計
地面站軟件負(fù)責(zé)對整個飛控系統(tǒng)的硬、軟件進行檢測及升級維護。其中,升級維護模塊負(fù)責(zé)飛控軟件的在線升級,其主要功能包括串口配置、與目標(biāo)機C6713駐留軟件進行指令和數(shù)據(jù)傳輸?shù)取?/p>
在進行飛控軟件在線升級時,將生成好的十六進制形式的飛控軟件代碼逐幀發(fā)送給DSP駐留軟件,并接收傳回的幀校驗信息,在必要時進行幀重發(fā)。升級完成后,飛控系統(tǒng)下電即可完成軟件升級過程。
由于駐留軟件啟動后存在45 s的升級等待時間窗,地面站可通過指令啟動飛控跳轉(zhuǎn),從而提前使DSP向飛控軟件跳轉(zhuǎn)。
在實際中,利用不同批次的飛控計算機產(chǎn)品進行了多次飛控軟件上傳和燒寫試驗,以驗證本文方法的可行性和可靠性。試驗用飛控計算機主板如圖8所示。
通過RS-422串口上傳飛控軟件過程如圖9所示,其中綠線為飛控代碼幀??偟娘w控代碼體積為 210 KB左右,在線燒寫耗時為170±5 s。在實驗過程中,地面站軟件偶爾出現(xiàn)回傳數(shù)據(jù)校驗出錯的提示,經(jīng)過重發(fā)再校驗后糾正了錯誤;而燒寫過程全部成功,沒有出現(xiàn)過錯誤。試驗證明雙重校驗機制提高了飛控軟件通過串口在線上傳的成功率,并通過數(shù)據(jù)接收成功和數(shù)據(jù)燒錄正確2個提示增強操作人員的信心。
圖8 試驗用飛控板
圖9 飛控軟件代碼上傳時的數(shù)據(jù)幀(最下方的波形)
在完成飛控軟件升級后,系統(tǒng)即可斷電重啟,在等待時間窗內(nèi),DSP收到從地面站發(fā)來的啟動用戶軟件指令之后,便可跳轉(zhuǎn)并啟動飛控軟件。通過CCS開發(fā)環(huán)境中的時鐘統(tǒng)計功能,可以得到飛控軟件跳轉(zhuǎn)及啟動耗時380±3 ms。
本文針對DSP+FPGA嵌入式系統(tǒng)的程序在線升級問題,設(shè)計了一種通過RS-422串行接口的上傳和燒錄方案。在系統(tǒng)上電后的時間窗內(nèi),駐留軟件可從串口接收地面站上傳的飛控軟件代碼,并在燒寫成功后利用多次加載方式實現(xiàn)飛控軟件的跳轉(zhuǎn)和啟動。這種方案避免了通過拆機方式進行程序升級的困難,降低了系統(tǒng)的維護成本,對飛控系統(tǒng)開發(fā)及其他嵌入式應(yīng)用系統(tǒng)的設(shè)計具有一定參考價值。
[1] 古新宇,李宗伯.基于雙DSP架構(gòu)的微小型無人機飛控系統(tǒng)[J].兵工自動化2010,28(8):79-85.
[2] 許少尉,劉 碩,景德勝.基于TMS320C6713B的遠(yuǎn)程軟件加載設(shè)計與實現(xiàn)[J].航空計算技術(shù),2013,43(4):122-128.
[3] 李聲飛.基于串口通信的DSP程序動態(tài)加載技術(shù)[J].電訊技術(shù),2011,51(6):121-124.
[4] 劉 宇,劉治斌,朱秀林.基于PCI總線的DSP系統(tǒng)應(yīng)用程序的更新[J].現(xiàn)代電子技術(shù),2013,36(6):113-117.
[5] 王 敏,黃戰(zhàn)華,孫秋實.DSP系統(tǒng)程序遠(yuǎn)程更新的研究與實現(xiàn)[J].計算機工程與應(yīng)用,2012,48(8):109-111.
[6] 吳海燕,張曉玲.一種基于TMS320C6000系列芯片的多DSP 程序動態(tài)加載方案[J].電子元器件應(yīng)用,2008(12):17-19.
[7] 龍小民,王 維.一種基于DSP的二次加載程序方法[J].數(shù)據(jù)采集與處理,2012,27(S2):393-395.
[8] 黃 康.TMS320C641X系列DSP引導(dǎo)方法研究[J].現(xiàn)代電子技術(shù),2010(21):207-209.
[9] 龔松顯,王光輝,陳 勇.DSP在線燒寫程序的可移植性設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2013(8):29-31.
[10] HE Qing-hua,YANG Min.Design of a Small UAV Flight Control System Based on DSP[J].2008,36(1):254-257.
[11] TI.TMS3206713/6713BFloating Point Digital Signal Processors[M].USA:Texas Instrument,2004.
[12] 何國偉,王 緯.軟件可靠性[M].北京:國防工業(yè)出版,1998.
[13] WOLFW.Computers as Components: Principles of Embedded Computing System Design(第2版)[M].北京:機械工業(yè)出版社,2009.
[14] 張雄偉,曹鐵勇.DSP芯片的原理與開發(fā)應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[15] 任麗香.TMS320C6000系列DSPs芯片的原理與應(yīng)用[M].北京:電子工業(yè)出版社,2000.
黃彥勃 男,(1991—),碩士研究生。主要研究方向:飛行器制導(dǎo)與控制。
魯興舉 男,(1978—),博士,講師。主要研究方向:飛行器制導(dǎo)與控制。
An Online Upgrade Method of Embedded Flight Control Software Based on Multiple Loading Design
HUANG Yan-bo,LU Xing-ju,GUO Hong-wu
(CollegeofMechatronicEngineeringandAutomation,NationalUniversityofDefenseTechnology,ChangshaHu’nan410073,China)
The online upgrade is always needed for embedded control software in the process of using and maintaining a DSP-core flight control system.One way of software upgrade is realized by Joint Test Action Group(JTAG) interface,but this method has great inconvenience after flight equipment assembled.This paper studies an online upgrade method for flight control software through serial interface.Based on DSP’s multiple loading design and double checking mechanism,the code is burned and self-started remotely and reliably on TMS320C6713B DSP system,and the availability of this method is proved.
DSP;flight control software;serial interface;multiple loading design;online upgrade
10.3969/j.issn.1003-3106.2016.12.18
黃彥勃,魯興舉,郭鴻武.基于多次加載方案的嵌入式飛控軟件在線升級方法[J].無線電工程,2016,46(12):73-77.
2016-08-29
國家自然科學(xué)基金資助項目(61403407)。
TN391.4
A
1003-3106(2016)12-0073-05