趙 飛
一種基于DSP+FPGA架構(gòu)的軟件在線升級實現(xiàn)
趙 飛
(中國電子科技集團公司第二十研究所,西安 710068)
為了解決在外場頻繁升級DSP程序所帶來的困擾,基于TI公司的TMS320C6416芯片平臺,提出了一種基于DSP+FPGA硬件架構(gòu)的軟件程序在線升級方法,研究并實現(xiàn)DSP程序的在線升級過程以及上電后的啟動引導(dǎo)流程。經(jīng)項目實際驗證該方法具有實現(xiàn)簡單、可靠性高等優(yōu)點。
TMS320C6416;在線升級;啟動引導(dǎo)
在對TMS320C6416芯片進行應(yīng)用時,經(jīng)常在交付用戶使用以后,也需要對DSP程序進行更新升級,傳統(tǒng)的升級方法是將設(shè)備的蓋板打開,使用CCS軟件和仿真器連接設(shè)備的DSP芯片,將新的可執(zhí)行程序離線升級到與DSP所連接的Flash芯片中,然而這樣經(jīng)常需要技術(shù)人員去奔赴外場,既費時也費力,而且偶爾也會因為仿真器無法連接上芯片從而導(dǎo)致無法升級或者升級失敗的問題。為了解決這一問題,本文提出了一種采用基于DSP+FPGA硬件架構(gòu)的在線升級方法,實現(xiàn)將可執(zhí)行程序通過上位機發(fā)送到DSP,經(jīng)EMIFA總線將數(shù)據(jù)存儲到與DSP芯片相連接的SDRAM中,DSP芯片再將存儲在SDRAM中的程序經(jīng)EMIFB總線接口燒寫到與DSP所相連的FLASH芯片中,將數(shù)字信號處理板重新上電后經(jīng)Boot Loader程序進行二次啟動引導(dǎo),從而完成軟件的在線升級過程[1]。
基于DSP+FPGA架構(gòu)在線升級設(shè)計方案的硬件平臺如圖1所示。
圖1 硬件平臺框圖
在線升級的硬件平臺主要由一片F(xiàn)PGA、一片DSP和上位機組成。DSP和FPGA之間通過EMIF接口連接,上位機和FPGA通過RS232連接。其中上位機的作用是將在線升級程序的Bin格式文件通過RS232接口發(fā)送給FPGA,F(xiàn)PGA再通過EMIF接口將被升級的Bin格式文件發(fā)送給DSP,DSP通過EMIFA總線將收到的Bin文件存儲在和DSP芯片相連的SDRAM中,存儲完成后DSP芯片再通過EMIFB總線將存儲在SDRAM中的Bin文件燒寫到FLASH中去。
TMS320C6416芯片的內(nèi)部RAM的大小為1M Byte,Boot Loader程序和用戶程序共享這1M Byte的存儲空間。其中L1段為存放Boot Loader引導(dǎo)程序空間,VEC段為中斷向量表的存儲區(qū)域,IRAM為用戶程序的代碼和變量區(qū)域,SDRAM為數(shù)據(jù)存儲區(qū)域,其內(nèi)存分配情況如圖2所示。
圖2 程序內(nèi)存空間分配
打開CCS5.5軟件,采用仿真器連接DSP芯片。在View菜單欄下選中Memory Browser,在Memory Browser的地址欄中輸入內(nèi)部RAM的起始地址0x00,根據(jù)圖2中的內(nèi)存分配和內(nèi)存使用情況,對所需保存的Bin格式文件大小進行計算。計算方式如下:
Bin文件大小=(L1+VEC+IRAM)/4
即:Bin文件大小=(0x400+0x400+0x32ff9)/4=0xCDFE
因FLSAH芯片每個片區(qū)的大小為0x20000,因而可以適當擴大IRAM的值,但IRAM的長度不能超過圖2中IRAM所分配的長度大小,即0x40000。
對程序進行升級前,需要對所要升級的Bin格式文件做一定的預(yù)處理。程序更新指令格式如圖3所示,在Bin格式文件前需要添加程序運行體加載頭(長度為14 Byte)。程序更新指令文件的累加和校驗字的格式由3部分內(nèi)容(“保留3字節(jié)”+“加載時間7字節(jié)”+“數(shù)據(jù)主體”)計算的校驗字,其長度為4字節(jié),3部分內(nèi)容按字節(jié)累加的和,累加和長度為32位的值,在進行累加時不進行數(shù)據(jù)截斷,為實際的累加值;加載時間采用BCD碼格式,如20180905110101,表示2018年9月5日11時1分1秒。
圖3 程序更新指令格式
程序升級主要流程如圖4所示,當DSP收到在線升級命令時先對命令進行校驗,若指令校驗正確則開始接收上位機分包下發(fā)的DSP Bin文件,每包數(shù)據(jù)長度為256 Byte,DSP收到數(shù)據(jù)后對所收到的每一幀數(shù)據(jù)進行程序更新應(yīng)答,若應(yīng)答成功,再發(fā)送下一包數(shù)據(jù),將應(yīng)答成功的數(shù)據(jù)存儲到SDRAM中。當收到結(jié)束幀時,對存儲在SDRAM中的數(shù)據(jù)開始計算累加和,將此累加和與上位機所下發(fā)的累加和進行比較,若相等則從SDRAM中取出存儲的DSP Bin文件,開始進行升級操作,升級成功則發(fā)送成功消息到上位機,若失敗則發(fā)送升級失敗原因到上位機,以便軟件開發(fā)人員進行故障排除。升級完成后,對設(shè)備進行斷電,重新上電以便對DSP芯片進行復(fù)位,上電后先根據(jù)程序加載時間判定新程序是否升級成功,再根據(jù)功能來判斷新升級的程序是否能正常運行[2]。
圖4 程序更新流程圖
當板卡上電復(fù)位時,DSP自動搬運Nor Flash的1 KB的Boot Loader程序,Boot Loader程序運行從Nor Flash的1 KB之后讀取DSP用戶程序并加載。啟動選擇EMIF方式啟動。其中EMIFB總線選中CE1控制寄存器,映射到FLASH中的0x64000000起始地址。Boot.asm文件中的EMIF總線配置程序代碼如下[3]:
_boot:
mvkl EMIFB_GCR,A4;初始化全局控制寄存器
mvkl EMIFB_GCR_DATA,B4
mvkh EMIFB_GCR,A4
mvkh EMIFB_GCR_DATA,B4
stw B4,*A4
mvkl EMIFB_CE1,A4;初始化CE1控制寄存器
mvkl EMIFB_CE1_DATA,B4
mvkh EMIFB_CE1,A4
mvkh EMIFB_CE1_DATA,B4
stw B4,*A4
mvkl 0x00000400,A4
mvkl 0x64000400,B4
mvkh 0x00000400,A4
mvkh 0x64000400,B4
對于C64x系列應(yīng)用程序需要采用二級引導(dǎo),因為程序的長度一般會大于1K字節(jié)(一級引導(dǎo)時所復(fù)制的長度)。使用兩級引導(dǎo)加載程序的過程如圖5所示,C64x的兩級引導(dǎo)步驟如下[4]:
(1)器件復(fù)位。DSP復(fù)位引腳上的低電平使得器件進入復(fù)位狀態(tài)。
(2)一級引導(dǎo)器從CE1空間復(fù)制固定長度的代碼到內(nèi)部RAM的0x0地址,所復(fù)制的內(nèi)容為二級引導(dǎo)代碼。
(3)二級引導(dǎo)代碼復(fù)制完成后,對CPU進行復(fù)位,使得CPU從0x0地址開始執(zhí)行,即二級引導(dǎo)代碼。二級引導(dǎo)將把應(yīng)用程序代碼復(fù)制到內(nèi)部的指定位置,并跳轉(zhuǎn)到程序入口_c_int00。
(4)執(zhí)行_c_int00,建立C運行環(huán)境,如果使用了DSP/BIOS需對其初始化。
(5)C運行環(huán)境建立好之后,運行主函數(shù)main()。如果使用了DSP/BIOS,進入DSP/BIOS調(diào)度。
通過上述步驟,應(yīng)用程序就能自動運行起來。
圖5 C64x兩級啟動引導(dǎo)流程
本文針對DSP TMSC6416芯片的軟件在線升級問題,詳細介紹了軟件在線升級的原理和實現(xiàn)方法,并且介紹了軟件升級完成后的啟動引導(dǎo)過程。采用此方法能方便地實現(xiàn)對遠端設(shè)備的程序升級,經(jīng)驗證此方法程序升級簡單,且穩(wěn)定可靠,并已應(yīng)用在多個項目中,取得了良好的效果。
[1] 鐘睿. DSP技術(shù)完全攻略[M]. 北京:化學(xué)工業(yè)出版社,2015.
[2] 姚昱萱. 基于TMS32064xx芯片系統(tǒng)的在線升級設(shè)計[J]. 科技信息,2013(5):272-274.
[3] 李鵬. DSP在線升級與資源優(yōu)化再配置[J]. 計算機工程,2008,34(17):225-226.
[4] 尹良鏡,王東升. 基于TMS320F28335的CAN總線的在線升級[J]. 機械工程與自動化,2018,4.
Software Online Upgrade Implementation Based on DSP and FPGA Architecture
ZHAO Fei
In order to solve the trouble caused by the frequent upgrade of DSP program in the outfield, based on TMS320C6416 chip platform of TI company, an online upgrading method of software program based on DSP and FPGA hardware architecture is proposed. The online upgrading process of DSP programs and the boot process after power-on are studied and realized, which is verified by the actual project The method has the advantages of simple implementation and high reliability.
TMS320C6416; Online Upgrade; Boot Loader
TP368.1
A
1674-7976-(2021)-06-462-04
2021-09-27。
趙飛(1990.09—),陜西西安人,碩士,工程師,主要研究方向為陸基無線電導(dǎo)航和數(shù)字信號處理。