摘 要: 提出了一種基于以太網(wǎng)的DSP程序加載技術(shù),,介紹了基于以太網(wǎng)的加載方法,包括網(wǎng)絡(luò)接口控制、HPI接口控制及Flash程序控制等關(guān)鍵技術(shù),,并給出了該方法在工程中的實際應(yīng)用,。與傳統(tǒng)的加載技術(shù)相比,該技術(shù)靈活方便,,可脫離仿真器實現(xiàn)遠(yuǎn)程,、大容量的程序代碼加載,快速完成DSP系統(tǒng)的軟件更新,。
關(guān)鍵詞: 以太網(wǎng),;TMS320C6713;HPI,;引導(dǎo)加載
隨著以太網(wǎng)技術(shù)和DSP技術(shù)的迅猛發(fā)展,,基于網(wǎng)絡(luò)的DSP設(shè)備已成為儀器儀表、工業(yè)控制和遠(yuǎn)程測控的重要發(fā)展方向,。在以DSP為核心的應(yīng)用系統(tǒng)中,,程序代碼的引導(dǎo)加載具有至關(guān)重要的作用。傳統(tǒng)的DSP程序加載是通過硬件仿真器來完成的,,但在工程應(yīng)用中,,一旦系統(tǒng)組裝為成品后,再對系統(tǒng)進行軟件更新和維護時,,傳統(tǒng)的加載方式就顯得十分不方便,,而且該方法不能解決程序代碼的遠(yuǎn)程加載問題。因此,,需要一種更加靈活,、高效的程序加載方式,而基于網(wǎng)絡(luò)的DSP軟件更新就成為一個新的熱點,。
本文介紹了DSP程序加載的基本原理,,設(shè)計了DSP加MicroBlaze軟處理器的系統(tǒng),并以TI公司的DSP為例,,提出了一種基于以太網(wǎng)的DSP程序加載技術(shù),,利用網(wǎng)絡(luò)通信實現(xiàn)DSP的動態(tài)加載及DSP資源的遠(yuǎn)程訪問,提高了軟件更新的效率及遠(yuǎn)程訪問的便利性,。
1 DSP程序網(wǎng)絡(luò)加載原理概述
要實現(xiàn)DSP程序的網(wǎng)絡(luò)加載,,需要解決的關(guān)鍵技術(shù)有數(shù)據(jù)的網(wǎng)絡(luò)發(fā)送和接收,DSP的HPI主機接口控制,,F(xiàn)lash存儲器的讀寫以及程序文件的網(wǎng)絡(luò)格式轉(zhuǎn)換,。具體的實現(xiàn)過程為:首先上位機工具將編譯好的程序輸出文件進行網(wǎng)絡(luò)分包轉(zhuǎn)換,按照網(wǎng)絡(luò)包的格式將代碼傳送給板卡的主控制器,,主控制器MicroBlaze接收到數(shù)據(jù)后通過DSP的HPI接口把程序?qū)懙絻?nèi)存中,,完成程序代碼的引導(dǎo)加載,。同時,也可以把接收到的網(wǎng)絡(luò)數(shù)據(jù)通過主控制器MicroBlaze寫入到外部Flash存儲器,,再次上電后完成程序的加載。
要實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送和接收,,必須要使系統(tǒng)能夠?qū)崿F(xiàn)網(wǎng)絡(luò)功能,,按照一定的協(xié)議進行網(wǎng)絡(luò)數(shù)據(jù)包的組織。目前,,應(yīng)用最廣泛的網(wǎng)絡(luò)協(xié)議是TCP/IP協(xié)議,,但由于控制器MicroBlaze自身資源有限,無法實現(xiàn)標(biāo)準(zhǔn)的TCP/IP協(xié)議,,再加上該系統(tǒng)網(wǎng)絡(luò)環(huán)境較簡單,,因此本設(shè)計采用效率較高且協(xié)議簡單的UDP協(xié)議來發(fā)送網(wǎng)絡(luò)數(shù)據(jù)。將UDP協(xié)議嵌入到主控制器MicroBlaze中,,即可實現(xiàn)系統(tǒng)的網(wǎng)絡(luò)接口功能,。
HPI接口是TI公司DSP留給外部主控制器訪問其資源的接口,通過HPI接口,,外部主控制器能夠?qū)崿F(xiàn)DSP程序的引導(dǎo),。具體過程為:當(dāng)系統(tǒng)上電后,DSP的CPU處在復(fù)位狀態(tài),,外設(shè)部分已工作正常,,外部主控制器通過HPI接口訪問DSP的所有資源,當(dāng)主控制器完成所有加載工作后,,把CPU從復(fù)位狀態(tài)喚醒,,開始從地址0處執(zhí)行程序。
通常DSP編譯器編譯后的程序文件一般都是COFF格式,,它由多個數(shù)據(jù)段組成,。其中.text通常包含可執(zhí)行代碼,.data通常包含已初始化的數(shù)據(jù),,.bss通常為未初始化的數(shù)據(jù)保留空間,。通過對COFF文件結(jié)構(gòu)的分析,讀取DSP編譯產(chǎn)生的.out文件,,根據(jù)文件本身攜帶的信息,,直接提取生成可供下載的二進制文件,再把二進制文件按照UDP協(xié)議分包后通過網(wǎng)絡(luò)發(fā)送到系統(tǒng)的主控制器,,即可完成DSP的網(wǎng)絡(luò)加載,。
2 系統(tǒng)設(shè)計與實現(xiàn)
2.1 硬件設(shè)計
系統(tǒng)采用基于DSP的主從式雙CPU,如圖1所示,。選用Xilinx公司的V5系列FPGA作為系統(tǒng)的控制單元,,內(nèi)部運行嵌入式MicroBlaze處理器用來作為主機,,負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)的接收、解析,、HPI接口的控制,、Flash存儲器的讀寫等工作。TMS320C6713主要完成和外部信號的接口,,完成信號處理算法的實現(xiàn),,可以通過網(wǎng)絡(luò)對其算法程序進行不斷的修改,以達到最佳的信號處理效果,。從圖1可以看出,,DSP與FPGA之間通過HPI接口連接,DSP還負(fù)責(zé)模擬信號的采集和輸出,。
2.1.1 網(wǎng)絡(luò)接口設(shè)計
實現(xiàn)系統(tǒng)程序的網(wǎng)絡(luò)加載需要解決的關(guān)鍵技術(shù)之一是模塊的網(wǎng)絡(luò)接口設(shè)計,,使該模塊能夠接入網(wǎng)絡(luò)。在本系統(tǒng)中,,為了提高靈活性并減少成本,,網(wǎng)絡(luò)接口的設(shè)計直接通過FPGA對物理層器件的控制實現(xiàn),然后由MicroBlaze軟核處理器完成上層協(xié)議的封裝和解析,,這樣提供了FPGA對網(wǎng)絡(luò)的靈活控制,,通過修改軟核處理器的程序即可完成不同協(xié)議的封裝。
FPGA通過內(nèi)部總線接收網(wǎng)絡(luò)數(shù)據(jù)的邏輯框圖如圖2所示,。FPGA通過內(nèi)部總線接收網(wǎng)絡(luò)數(shù)據(jù)時,,數(shù)據(jù)從物理器件MII接口的RX_D[0:3]進入FPGA,根據(jù)MII的接收時序,,檢測到網(wǎng)絡(luò)數(shù)據(jù)幀中的幀前序和幀起始符后,,觸發(fā)地址產(chǎn)生邏輯,將接收到的RX_D[0:3]和RX_EN信號轉(zhuǎn)換為4 bit的數(shù)據(jù)寫入到2 KB的雙端口RAM中,。雙端口RAM是在FPGA內(nèi)部生成的,,其A端口為4 bit的數(shù)據(jù)線,B端口為32 bit的數(shù)據(jù)線,,用于FPGA內(nèi)MII接收與HPI接口間進行數(shù)據(jù)轉(zhuǎn)換,。從雙端口RAM端口A寫入數(shù)據(jù),由B端口讀出,,經(jīng)過轉(zhuǎn)換后與DSP的HPI接口相連,。在對DSP的HPI接口進行配置后,網(wǎng)絡(luò)接收到的數(shù)據(jù)在FPGA軟核處理器的控制下可以寫入到DSP的內(nèi)存中,,從而實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的接收,。
2.1.2 HPI接口設(shè)計
TMS320C6713的HPI端口為一個16 bit寬的并行端口,此接口為主機與DSP的數(shù)據(jù)交換提供了最方便有效的方案,。主機掌管著該端口的主控權(quán),,可通過HPI接口直接訪問DSP的存儲空間和外圍設(shè)備,。主機對HPI內(nèi)存的訪問通過HPIC(HPI控制寄存器)、HPIA(HPI地址寄存器)和HPID(HPI數(shù)據(jù)寄存器)3個專用的DSP寄存器來實現(xiàn),。主機可以對這3個寄存器進行讀寫,,而DSP只能對HPIC進行訪問。HPID中存放的是主機從存儲器中讀取的數(shù)據(jù),,或者是主機向DSP存儲空間寫入的數(shù)據(jù),。HPIA中存放的是主機訪問的地址,HPIC中存放的是控制信息,。
在FPGA中做一個HPI的控制核,可以產(chǎn)生對HPI接口的控制時序,,包括地址線和讀寫信號線等控制邏輯,,在軟核處理器MicroBlaze上編寫HPI接口的相應(yīng)驅(qū)動程序,包括HPI接口的讀,、寫操作及復(fù)位操作等函數(shù),。用戶通過調(diào)用某個HPI驅(qū)動函數(shù),驅(qū)動函數(shù)轉(zhuǎn)化為底層的時序控制邏輯,,就可以完成對HPI接口的訪問,。
2.2 軟件設(shè)計
硬件是基礎(chǔ),軟件是核心,,硬件必須搭配穩(wěn)定,、高效的軟件才能組成一個完整的系統(tǒng)。根據(jù)硬件的層次結(jié)構(gòu),,加載系統(tǒng)的軟件主要完成以下功能部分的設(shè)計:上位機控制程序,、上位機網(wǎng)口程序、FPGA軟核處理器網(wǎng)絡(luò)驅(qū)動程序以及軟核處理器服務(wù)程序,。
2.2.1 上位機軟件設(shè)計
上位機軟件是用戶實現(xiàn)DSP網(wǎng)絡(luò)加載的平臺,,采用C++ Builder 6.0設(shè)計完成。該開發(fā)工具內(nèi)部集成了UDP協(xié)議的通信控件,,只要再經(jīng)過簡單的封裝就可以形成UDP協(xié)議的網(wǎng)絡(luò)驅(qū)動程序,,不需要底層進行開發(fā)。上位機控制程序?qū)ν獠捎肕DI界面,,主要實現(xiàn)程序的加載,、燒錄以及內(nèi)存的查看等功能。
2.2.2 底層軟件設(shè)計
底層驅(qū)動軟件的核心是網(wǎng)絡(luò)接口的驅(qū)動程序,??紤]到FPGA實現(xiàn)網(wǎng)絡(luò)協(xié)議的簡單性和實時性的要求,選用UDP協(xié)議作為傳輸協(xié)議,,網(wǎng)絡(luò)數(shù)據(jù)封裝必然要滿足UDP協(xié)議的幀格式,。數(shù)據(jù)幀中包含了7 B的幀前序和1 B的幀起始符,。完整的UDP協(xié)議的幀結(jié)構(gòu)如表1所示。由表可知,,UDP協(xié)議是在IP協(xié)議和MAC幀格式的基礎(chǔ)上封裝的,。
3 系統(tǒng)設(shè)計中的關(guān)鍵技術(shù)
在系統(tǒng)設(shè)計中,主要涉及:網(wǎng)絡(luò)接口和HPI接口兩個接口,,對這兩個接口的訪問控制非常重要,。此外,HPI程序加載代碼的生成也非常關(guān)鍵,。
3.1 網(wǎng)絡(luò)接口的實現(xiàn)
網(wǎng)絡(luò)接口采用FPGA編寫IP核的方式來實現(xiàn),,主要是MAC層控制器的設(shè)計,其既可以集成于網(wǎng)絡(luò)終端設(shè)備中實現(xiàn)網(wǎng)絡(luò)接入,,同時又是開發(fā)網(wǎng)橋,、交換機等網(wǎng)絡(luò)互聯(lián)的設(shè)備。整個MAC分為10個模塊,,其構(gòu)成圖如圖4所示,。每個模塊都完成相對獨立的一系列功能,各模塊的功能如下,。
?。?)PHY接口模塊。根據(jù)PHY的工作模式,,將MII接口不同的數(shù)據(jù)位寬進行轉(zhuǎn)換,,從而提供給上層發(fā)送模塊和接收模塊統(tǒng)一的位寬。
?。?)發(fā)送模塊,。其主要功能是按照CSAM機制完成信道接入控制,以及將上層的待發(fā)送數(shù)據(jù)封裝成以太網(wǎng)幀的格式,,為其添加前導(dǎo)碼,、幀起始定界符、PAD和CRC校驗字段并發(fā)出,。
?。?)接收模塊。進行單播/組播/廣播幀的過濾,,進行CRC校驗,,濾除幀碎片,把合法的幀傳輸至上層,,并在接收結(jié)束后向上層報告幀接收的狀態(tài),。
(4)流量控制模塊,。完成全雙工下流量控制的功能,。
?。?)發(fā)送緩存/接收緩存。實現(xiàn)對發(fā)送/接收幀緩存的管理,。
?。?)AHB總線接口。它為外部總線接口,,完成與MicroBlaze軟核及其他AHB接口單元的通信,。
(7)MII管理模塊,。完成對PHY工作模式的監(jiān)控和設(shè)置,。
(8)時鐘管理模塊,。其產(chǎn)生不同工作模式下各個模塊的工作時鐘和時鐘使能信號,。
(9)寄存器和中斷模塊,。負(fù)責(zé)系統(tǒng)模式配置及中斷管理,。
3.2 HPI接口的訪問控制
DSP引導(dǎo)配置引腳HD[4:3]決定了TMS320C6713的引導(dǎo)加載模式,,將DSP的HPI接口引腳HD[4:3]通過下拉電阻接地,,即選擇HPI加載。HPI接口主要信號有HD[15:0],,并行雙向數(shù)據(jù)地址共用總線,,主要傳輸控制寄存器的值、初始化訪問地址及數(shù)據(jù),;HCNTL[1:0]主要控制當(dāng)前訪問的是哪一個寄存器,,當(dāng)控制線不同譯碼時可以訪問不同的寄存器;HHWIL信號用于區(qū)分?jǐn)?shù)據(jù)線上傳輸?shù)氖菙?shù)據(jù)的高16 bit還是低16 bit,;HR/W信號用于讀/寫選擇,,高電平表示主機讀,低電平表示主機寫,;HRDY信號用于表明HPI是否已經(jīng)準(zhǔn)備好傳輸數(shù)據(jù),,其作用是在接口時序上插入等待周期;HINT信號表示向主機發(fā)出的中斷,,當(dāng)DSP需要和主機通信時,,將該位置1,主機就會響應(yīng)中斷,。根據(jù)上述的信號功能,,MicroBlaze處理器的局部總線和HPI的數(shù)據(jù)總線相連,MicroBlaze處理器的3 bit地址線和HPI接口的控制線相連,,MicroBlaze處理器映射的控制寄存器的控制位連接到片選信號,。通過上述信號線的物理連接,,在軟件訪問具體的地址空間時就可以譯碼出HPI接口讀寫的一系列片選、控制信號,,完成對HPI接口的訪問,。
3.3 HPI程序加載代碼生成
在CCS開發(fā)環(huán)境下生成的目標(biāo)文件是“*.out”,即通用目標(biāo)文件格式(COFF),。該文件可以在CCS開發(fā)環(huán)境下通過仿真器下載到DSP目標(biāo)板中運行調(diào)試,,但代碼文件并不是DSP中實際運行的程序代碼,需要Hex工具進行轉(zhuǎn)換,,然后自編程序?qū)⒖蓤?zhí)行的程序代碼提取處理,,可執(zhí)行的程序代碼作為數(shù)據(jù)段封裝成幀,通過以太網(wǎng)加載到TMS320C6713中,。由于HPI引導(dǎo)完成后,,DSP是從地址0開始執(zhí)行的,而DSP程序的入口是c_int00,,因此要在地址0處添加一條跳轉(zhuǎn)指令到程序入口,。在編程時要特別注意需將中斷代碼段放在存儲空間的0000H~01FFH。
本文提出了一種基于以太網(wǎng)的DSP程序加載技術(shù),,該技術(shù)在多DSP系統(tǒng)的程序加載及遠(yuǎn)程控制系統(tǒng)的軟件更新等工程應(yīng)用領(lǐng)域具有獨特的優(yōu)越性和較好的應(yīng)用前景,。該方法已經(jīng)在某DSP信號處理系統(tǒng)中得到應(yīng)用。實際測試表明,,該加載技術(shù)靈活可靠,,完全滿足現(xiàn)場調(diào)試的需要。
參考文獻
[1] Texas Instruments. TMS320C6000 DSP host port interface reference guide[Z]. 2006.
[2] 左幜睿,,劉永清,,張傲華,等.基于以太網(wǎng)的DSP遠(yuǎn)程加載技術(shù)研究[J].單片機與嵌入式系統(tǒng)應(yīng)用,,2012(5):24-26.
[3] 夏軍營,,喬純捷,王剛,,等.基于以太網(wǎng)接口的多DSP監(jiān)控技術(shù)研究[J].計算機測量與控制,,2007,15(7):913-915.
[4] 張曉亮.基于SOPC以太網(wǎng)技術(shù)的研究與實現(xiàn)[D].大連:大連理工大學(xué),,2007.
[5] 江華.基于TigerSHARC的可配置DSP系統(tǒng)動態(tài)加載技術(shù)[D].西安:西安電子科技大學(xué),,2006.