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