馬喜強,劉維亞 ,鄭喜鳳
(1.中國科學院長春光學精密機械與物理研究所,長春130033;2.中國科學院研究生院,北京100039)
現(xiàn)代商業(yè)及工業(yè)嵌入式電力電子產品出于美觀、安全和可維護性方面的考慮,對系統(tǒng)維護的時效性和便攜性要求越來越高?;贒SP 開發(fā)的野外及外場數字設備程序維護困難,已安裝的設備若用戶提出新需求,需要對內部程序進行脫機更新[1]。
針對DSP 在線編程問題,張謙等提出的基于硬件標志位控制的方法,編寫了文件轉換工具,實現(xiàn)了DSP 在兩套程序之間的選擇加載,避免了對FLASH的反復燒寫[2];王宏義等提出了基于PCI 總線使用單個FLASH 存儲器同時實現(xiàn)DSP 引導加載和FPGA 配置的方法[3];劉鐵提出的基于CAN 總線程序在線升級的方法,使DSP 代碼的更新可以脫離仿真器,大大提高了DSP 系統(tǒng)程序升級的效率[4];沈軍等提出了基于RS422 串行通信遠程更新DSP 程序的方法,在系統(tǒng)不掉電的情況下實現(xiàn)了DSP 程序的遠程更新與自啟動[5];陶維青等提出了基于TMS320F2812 DSP的軟件更新方法[6],但通過串口實現(xiàn)的4 kbyte/min的更新速度顯然不能滿足野外系統(tǒng)的要求。以上方法都具有一定的局限性:通信方式單一,不能滿足野外數字設備復雜性及多變性的要求。
針對上述問題,本文提出了一種基于多通信方式的DSP 程序更新方法,介紹了方案的實現(xiàn)要點,本方法已經成功應用于某型數字測風經緯儀系統(tǒng)中。
系統(tǒng)的MCU 選用的是TI 公司的TMS320C6747(以下簡稱C6747),C6747 是業(yè)界功耗最低的浮點DSP,C6747 自帶USB、串口、網絡和CAN 總線等接口,無需外擴芯片。第一次更新程序時,需要使用仿真器將目標程序更新至FLASH 分區(qū)1 中,此時系統(tǒng)即可運行。系統(tǒng)需要更新程序時,系統(tǒng)首先響應中斷并讀取多通信模塊信息,然后等待用戶按鍵選擇需要更新的程序,接著從相應通信設備中讀入目標程序及其大小數值,放到內部RAM 緩存中,然后系統(tǒng)判斷當前程序的入口地址,如為FLASH 分區(qū)1,則把目標程序更新至FLASH 分區(qū)2 中,并把程序的入口地址設置為FLASH 分區(qū)2;反之則對FALSH 分區(qū)1 采取相同操作。系統(tǒng)通信設備的信息讀取由多通信模塊完成。這樣就實現(xiàn)了程序更新并且保存了更新前的原程序。系統(tǒng)程序在線編程的軟件流程圖如圖1 所示。
圖1 系統(tǒng)程序在線編程的軟件流程圖
目前工業(yè)界通信協(xié)議具有復雜性和多樣性的特點,傳統(tǒng)的多種通信功能的實現(xiàn)僅僅致力于通信方式接口的開發(fā)與實現(xiàn)[7-10],可移植性差,并且遠遠不能滿足復雜環(huán)境下的需求。本文多通信模塊的設計思想:將數據收發(fā)的過程與數據內部表示的信息分離。數據收發(fā)由抽象的收發(fā)器接口表示,在硬件中具體實現(xiàn),比如基本TCP/IP、無線網絡接口、RS232,485 接口等。協(xié)議也具備可擴展性。協(xié)議的可擴展性由專門的協(xié)議管理層實現(xiàn),管理層具有協(xié)議注冊和匹配功能。協(xié)議層由一組平等的協(xié)議集合構成。當需要添加新協(xié)議時,在協(xié)議層實現(xiàn)協(xié)議并向協(xié)議管理層注冊。
基于模塊化設計方法,提出了可擴展多通信方式模塊如圖2 所示。本模塊主要由五個部分組成,協(xié)議層、協(xié)議管理層、數據收發(fā)層、傳輸層和接口層,同時具備有線、無線多種通信能力,可以根據具體環(huán)境靈活選擇。使用可擴展通信協(xié)議棧,支持對通信接口和通信協(xié)議的擴展。下面分別對各個層進行介紹。
圖2 可擴展多通信方式模塊圖
接口層和傳輸層主要對應于硬件設備,每種接口對應于某類傳輸層,如RS232、RS422、RS485 均屬于串口傳輸層。數據收發(fā)層主要負責底層設備的數據接收和發(fā)送,采用數據統(tǒng)一收發(fā)的協(xié)議方式,可以有效地實現(xiàn)應用程序與底層接口驅動的隔離。協(xié)議管理層主要負責協(xié)議的匹配,并對已收到和待發(fā)送的指令幀的指令類型、目的地址和包數據幀數進行解析。協(xié)議層主要負責數據幀和應答幀的分類處理和編制。軟件流程圖如圖3 所示。
圖3 通信模塊軟件流程圖
DSP/BIOS 是一個用戶可剪裁的實時操作系統(tǒng),主要由三部分組成:多線程實時內核、實時分析工具、芯片支持庫。利用DSP/BIOS,可以方便快速的開發(fā)復雜的DSP 程序[11]。多線程實時內核調度多線程的運行,將定制的系統(tǒng)算法作為一個嵌入系統(tǒng)線程。DSP/BIOS 以模塊化方式提供給用戶對線程、中斷、定時器、內存資源、所有外設資源的管理能力都可以根據需要剪裁[12]。實際應用時把相應的算法作為一個線程插入DSP/BIOS 的調度隊列,由DSP/BIOS 進行調度。本設計是基于DSP/BIOS RTFS(The DSP/BIOS Real-Time File System)開發(fā)實現(xiàn)的。
為了能夠使用RTFS API 函數,應首先向目標工程中加入環(huán)境變量,主要需要修改兩部分內容:Project-Build 和Options-Compiler。修 改 方 法 參 見RTFS 相關文檔。然后需要編寫DSP/BIOS 配置文件,配置文件的關鍵配置程序為:bios.ECM.ENABLE=1;bios.GBL.C64PLUSMAR128to159=0x0000ffff。
CCS 編譯生成的* .Out 需要通過AISgen 軟件轉化為* . AIS 文件才能為DSP 所識別,AISgen for D800K003 軟件在產生AIS 文件時需要根據需要對時鐘管理器、EMIFB 管理器、系統(tǒng)上電管理器以及引腳復用管理器進行配置,具體配置方法如圖4 所示。
圖4 AIS 文件生成配置圖
AIS 文件生成后需要對其進行解析和修改以確定上電boot 后對加載程序分區(qū)定位,AIS 文件是一個二進制文件,其基本架構為:4 字節(jié)命令頭+命令+……+結束跳轉指令。對AIS 文件的修改主要包含對段連接命令地址內容和跳轉結束命令地址內容的修改。段連接命令的作用是段入口點的指定,其形式為:0x58535901+段連接地址+段大小+段數據。在AIS 文件中找到0x58535901,修改其后面的段連接地址為程序在FLASH 中的存放地址。跳轉結束命令的作用是AIS 文件結束的標志并跳轉到用戶應用程序(此處為已更新程序的地址),其形式為:0x58535906+跳轉地址。修改其跳轉地址為已更新程序的存放地址。至此AIS 文件修改完畢。
本設計程序更新方式在程序更新過程中采用雙緩沖方式處理數據,在對程序數據進行搬移時,由EDMA方式控制時序,不占用CPU 資源,實現(xiàn)無開銷地交換內外存數據,從而減輕了CPU 的運行負擔,增加了程序的并行性,從而實現(xiàn)程序數據傳輸和FLASH 寫入處理的同步進行,提高效率并且使系統(tǒng)可以處理流水式輸入的目標程序數據。其具體實現(xiàn)流程如下:
(1)在內存中設置雙緩沖區(qū),分別為A 和B;
(2)將一幀目標程序數據(大小為1 kbyte)從通信模塊中搬到緩沖區(qū)A;
(3)對緩沖區(qū)A 中的數據進行FLASH 寫入的同時,將后續(xù)的一幀數據從通信模塊中搬到緩沖區(qū)B;
(4)將緩沖區(qū)B 中的數據寫入FLASH 的同時,將后續(xù)的一幀數據從通信模塊中搬到緩沖區(qū)A。
如此循環(huán)進行,可以使數據的搬移與處理實現(xiàn)并行,極大地提高程序更新的執(zhí)行效率。
數字測風經緯儀系統(tǒng)主要由3 部分組成:數字測風經緯儀、計算機計算平臺和手持計算器。在使用時,氣象員通過經緯儀的光學望遠鏡跟蹤測風氣球,測風經緯儀使用光電碼盤自動記錄時間、仰角、方位角信息,然后把測風數據傳送給計算機平臺或手持計算器,計算機或手持計算器便計算出各種氣象通報。測風經緯儀的某些參數會隨時間而改變,高空風計算模型種類繁多,每種模型計算非常復雜,需要定時標定和驗證,及時修改某些參數。升級程序時,用戶借助計算機終端通過CAN 總線、485 總線或者網絡遠程向經緯儀發(fā)送代碼數據(需要編寫上位機在線升級模塊),也可以現(xiàn)場直接使用U 盤更新程序,即可完成測風經緯儀的程序升級工作。該程序功能穩(wěn)定可靠,對幾種高空風計算模型的程序更新測試結果如表1 所示。
表1 3 種方法程序更新效率比較
本文針對現(xiàn)有單通信方式程序更新的不足,提出了基于可擴展多通信方式的DSP 程序在線編程方法,該方法將數據收發(fā)的過程與數據內部表示的信息分離,同時具備有線、無線多種通信能力,可以根據具體環(huán)境靈活選擇,并支持對通信接口和通信協(xié)議的擴展。本文還對DSP6747 可執(zhí)行AIS 文件進行了深入的分析,提出了EDMA 方式實現(xiàn)程更新。實踐表明,本方法具有更好的可擴展性和可維護性,使DSP 在線編程脫離仿真器,能夠適用于更廣泛的應用場合。
[1] 楊力波,潘志鉑.用DSP 軟件編程實現(xiàn)的引導裝載系統(tǒng)[J].國外電子元器件,2003,15(5):15-19.
[2] 張謙,李世杰,李紅波,等.TMS320C6000 系列DSP 可選擇引導加載方式的設計與實現(xiàn)[J].電子測量技術,2009,32(7):81-84.
[3] 王宏義,董文娟,黃宗福,等. DSP 和FPGA 共用Flash 進行配置的方法[J].微計算機信息,2008,24(9):101-102.
[4] 劉鐵.基于CAN 總線實現(xiàn)DSP 程序的在線升級[J]. 紡織機械,2010,5(1):8-11.
[5] 沈軍,繆玲娟,張高安. 基于串行通信的DSP 程序遠程更新[J].微計算機信息,2010,26(3):4-5.
[6] 陶維青,任謙.通過串口通訊實現(xiàn)TMS320F2812 的軟件更新[J].合肥工業(yè)大學學報(自然科學版),2008,4(31):570-572.
[7] 朱景福,池俊亞,丁國超. 多種通信功能農田數據采集傳輸裝置的研制[J].農機化研究,2009,3(3):83-85.
[8] 程雪,侯思祖,王彬. 具有多種通信功能的數據采集裝置的實現(xiàn)[J].工業(yè)控制計算機,2006,19(12):16-19.
[9] 肖雋,丁艷軍,呂震中.具有多種通信協(xié)議接口的通用數據采集裝置[J].東南大學學報(自然科學版),2000,30(2):121-124.
[10] 白文保,馬旭東,丁志穩(wěn). 支持多種通信模式的遠程抄表系統(tǒng)采集終端設計[J].儀器儀表與分析監(jiān)測,2010,1(1):6-8.
[11] 丁宜棟,華蕓.基于DSP/BIOS 的軟件系統(tǒng)設計[J].艦船電子工程,2001,5(1):52-55.
[12] 李方慧,王飛,何佩琨. TMS320C6000 系列DSPs 原理與應用[M].2 版.北京:電子工業(yè)出版社,2003:141-190.