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