劉宵辰 李興智 王俊 航空工業(yè)西安航空計算技術研究所
數字信號處理器DSP在航空航天領域應用非常廣泛,使用該處理器的產品在系統(tǒng)聯(lián)試或交付使用后,軟件不可避免的要進行升級維護。傳統(tǒng)的維護升級方法是,現(xiàn)場對設備開蓋,通過仿真器連接設備進行JATG燒寫,升級維護比較麻煩。因此,如何通過外部接口實現(xiàn)對處理器的軟件升級是亟待解決的一個問題。
文獻[1]介紹了一種基于RS422總線的DSP軟件在線加載方法,描述了該在線加載方法的基本思想,以及實現(xiàn)該方法的基本步驟。文獻[2]提出了一種利用CAN總線更新DSP程序的方法,對軟件設計開發(fā)的流程進行了介紹。文獻[3]提出一種基于PCI總線升級DSP應用程序的方法,該方法利用了PCI總線的高速數據通信特點,實現(xiàn)應用程序的更新維護。文獻[4]提出一種基于以太網的DSP程序更新方法,實現(xiàn)了遠程升級、維護DSP程序。文獻[5]研究了DSP程序引導啟動的原理和FLASH固化原理,在此基礎上,利用GPRS通信技術,設計了一種DSP程序遠程升級方案。
本文提出了一種DSP程序在線加載方案,可供設計人員進行DSP程序在線加載設計時參考。
在線加載功能框圖如圖1所示,在線加載主要涉及兩個程序:加載程序(Prog Load)和應用程序(Prog App),兩個程序分別由兩個獨立的CCS工程(CCS Project)產生。
加載程序在開發(fā)完成后,可在產品交付前通過JTAG將其燒寫、固化在DSP指定的Flash內存空間中,主要用于實現(xiàn)與上位機的通訊,當需要升級應用程序時,將上位機發(fā)送過來的應用程序代碼數據燒寫到指定的FLASH空間中。在后期軟件維護升級過程中,不需要對該加載軟件進行更改。
應用程序是根據需求編寫的可更新的特定功能代碼,由加載程序將應用程序代碼數據燒寫到應用程序所對應Flash內存空間中。
DSP上電復位后首先運行加載程序,在加載程序中判斷是否需要升級。如不需要升級,程序跳轉到應用程序的入口地址,執(zhí)行應用程序;如需要升級,則先擦除應用程序對應FLASH區(qū),然后將應用程序升級代碼寫入到指定的FLASH區(qū)域中。
圖1 在線加載功能框圖
要實現(xiàn)程序在線加載,必須使加載程序和應用程序相互獨立,使二者存儲于不同的存儲區(qū)域。要實現(xiàn)程序相互獨立則需要配置兩個程序的cmd文件。如圖2所示,本項目將加載程序(Load Program)配置在FLASHA中,應用程序(Application Program)配置在FLASHC~H中,從而實現(xiàn)加載程序與應用程序的獨立。
圖2 DSP Flash劃分示意圖
DSP根據外置管腳的不同配置分別采用不同的啟動方式,本文設計采用從FLASH引導。DSP上電復位后首先執(zhí)行加載程序,在加載程序中根據條件判斷繼續(xù)執(zhí)行加載程序還是執(zhí)行應用程序。
本方法將加載程序(Load Program)的啟動地址設置為0x33FFF6,將應用程序(Application Program)的啟動地址設置為0x300000。產品上電后,系統(tǒng)先從0x33FFF6地址開始執(zhí)行加載程序,加載程序的主要功能如下:
a.接收總線指令,根據總線指令決定是否需要在線加載;
b.如需軟件升級,則通過總線接收升級程序代碼并校驗;
c.將接收到的數據燒寫到Flash的指定區(qū)域;
d.程序跳轉到應用程序的入口地址,進而執(zhí)行應用程序。
加載程序執(zhí)行流程見圖3。
圖3 加載程序執(zhí)行流程圖
集成開發(fā)環(huán)境CCS編譯生成的.out文件是一種二進制可執(zhí)行文件格式。該文件的文件格式是通用目標文件格式COFF(Common Object File Format),此種格式的文件可以利用DSP仿真器加載到DSP的RAM中直接運行,但是不適用對片內Flash進行在線編程,因此需要將應用程序生成的.out文件轉換成.bin文件,.bin文件可以直接用于在線加載。
當執(zhí)行在線加載時,目標機和上位機建立通訊后,會接收上位機發(fā)來的應用程序固化數據。目標機對接收到的數據進行校驗,數據校驗正確后向上位機返回正確狀態(tài)并將數據依次存放在DSP的RAM數據空間中。若接收到的數據校驗錯誤則向上位機返回錯誤狀態(tài),拋棄所接收到的數據,并等待上位機重新發(fā)送。
目標機完成應用軟件數據的接收后,即可以調用FLASH API進行FLASH燒寫。
本文提出了一種DSP軟件在線加載的方法,使用該方法可以大大提高產品軟件的可維護性和擴展性,此外,該方法具有一定程度的普遍意義,對其他類似系統(tǒng)的程序在線加載具有借鑒意義。