1 引言 隨著數字信號處理理論的日趨完善和超大規模集成電路技術的飛速發展,在各種實時處理應用需求的推動下,數字信號處理器(DSP)也得到了越來越廣泛的應用。 DSP的監控是DSP開發和應用中十分重要的環節。目前在DSP的開發過程中,最常用的方式是通過購買處理器的JTAG仿真器和開發軟件包實現對DSP的調試和監控。JTAG調試工具的功能十分強大,對于不熟悉DSP內部結構和細節的開發者而言是一種非常不錯的選擇。但是此種方法也有其缺陷:首先,開發成本比較昂貴,一般購買正版仿真器和軟件包的價格都在數千美元至數萬美元不等;其次,通用性不強。不但不同公司的處理器需要使用不同的仿真器,同一公司的不同系列DSP之間也沒有兼容性。 基于以上原因,筆者結合ADSP-21262的開發研究了其他的監控實現方式。 2 單DSP系統監控設計 2.1 ADSP-21262簡介 ADSP-21262是ADI公司推出的一款高性能浮點數字信號處理器,特性如下: 200 MHz工作主頻。1 200 MFLOPS; 超級哈佛結構,內部三條獨立總線,三級流水線結構; 2 Mbit雙口SRAM,4 Mbit雙口ROM; 雙內核結構,支持SISD和SIMD工作模式; 22條獨立的DMA通道; 豐富的外圍設備接口。 2.2 單DSP系統監控硬件設計 單ADSP-21262型DSP系統的監控部分硬件電路如圖1所示。 ADSP-21262支持多種上電引導方式,如外部EPROM引導、SPI主模式引導、SPI從模式引導。這里選取SPI主模式作為其引導方式。AT25F1024為串行SPI Flash存儲器,用于存儲ADSP-21262需要引導的程序。如果這里存儲的是監控程序,則DSP完成上電引導后便可進入監控狀態。并能執行相應的監控功能操作。 這里用異步串口(UART)作為監控系統與用戶PC機的通訊接口,完成底層監控程序和PC端監控服務軟件之間的通訊。MAX232為電平轉換器件,將DSP端的CMOS電平轉化為PC端的RS232電平。大多數DSP均不提供自帶的UART接口,但是由于UART接口為大多數工程人員所熟悉。并且連線簡單,很容易通過兩根通用I/O口來分別模擬其Tx、Rx信號,故這里采用此方案。 當然也可以用USB控制器或網口控制器實現USB接口方式或網絡接口方式的監控。無論是PC機層的監控服務軟件設計,還是底層的監控功能程序設計,在原理上基本一致,不同的只是上層PC機的監控服務軟件和底層DSP的監控功能程序之間的通訊所采用的接口方式。這里以UART接口的監控系統為例進行詳細介紹。 2.3 監控軟件設計 監控的主要功能是方便DSP的調試,故其應該為用戶提供的功能主要包括: 處理器的復位和初始化; 程序的裝載和運行; 查看DSP內部數據區和程序區; 寫DSP內部數據區和程序區; 查看相關的系統寄存器; 程序代碼的反匯編顯示。 監控軟件的設計由上層PC機監控服務軟件和底層DSP監控功能程序兩部分組成,它的層次結構如圖2所示。 2.3.1 PC機軟件設計 PC機軟件是用戶實現DSP監控操作的平臺,由C++Builder 5.0開發完成。主要由監控軟件界面、各個監控功能模塊和UART驅動函數模塊組成。 監控軟件界面是監控系統和用戶進行信息交互的平臺,它整合了各個監控功能模塊,用戶通過它完成各個功能模塊的調用、參數的傳遞、結果的顯示等。 PC監控功能模塊完成對底層DSP監控功能程序的調用,從而實現用戶所需的相應監控功能。 UART驅動函數模塊的作用是實現上層PC機的監控服務軟件和底層DSP的監控功能程序之間的UART接口通訊。 2.3.2 底層軟件設計 底層DSP監控功能程序是整個監控功能實現的核心,由匯編語言開發完成。它由底層監控功能模塊和UART協議收發驅動函數模塊組成。 底層監控功能模塊可以供PC端監控功能模塊進行調用,它直接負責完成對DSP的相應管理和操作,如:程序的裝載和運行、DSP內部指定地址存儲區的讀寫、寄存器的讀寫等。 由于ADSP-21262不帶UART接口,于是需要UART協議收發驅動函數用兩個通用I/O引腳模擬UART的工作時序,以實現DSP與PC間的通訊。 2.4 單DSP系統監控的工作機制 系統的監控功能需要PC機軟件和底層軟件協同工作來實現,工作流程如圖3所示。 圖3中左半部分代表底層DSP監控功能程序的流程,右半部分代表PC機監控服務軟件的操作流程,中間的虛線代表底層軟件和PC機軟件之間有數據通訊。 ADSP-21262內有1 Mbit的程序存儲器(PM),當配置為32位字長時,其地址空間為:0X80000~0X87FFF。其中0X80000~0X800FF為中斷向量表的位置,其后的空間被分為兩部分,分別存放用戶程序和監控程序。其中用戶程序駐留在低地址空間,監控程序駐留在高地址空間,具體位置用戶可以根據監控程序的大小作出調整。DSP的程序區示意圖如圖4所示。底層監控程序中UART的模擬是通過定時對Rx和Tx信號線進行采樣來實現的,因此在監控程序中斷向量表中的定時中斷_TMZHI處執行JUMP TIMER0_INT指令,其中TIMER0_INT處為定時中斷服務程序,用于實現UART的收發功能。而在下載用戶程序時,監控程序的中段向量表被用戶的中斷向量表所覆蓋,于是就無法執行相應的UART操作了,為了解決該問題,在監控程序中加入以下代碼段: 其作用就是保護定時中斷向量入口,以保證正確進入定時中斷服務程序。 3 多DSP系統監控設計 3.1 多DSP系統監控硬件設計 多ADSP-21262的DSP系統監控電路如圖5所示。 此系統共由5個ADSP-21262組成。其中DSP0被設為主處理器,其余4個作為從處理器。主處理器可以通過SPI總線與各從處理器通訊。從而實現對各從處理器的監控操作。而PC機與主處理器之間則采用上文所述的單DSP系統的監控方式,這里不作贅述。 主DSP設置為EPROM引導方式,上電后從外部EPROM中引導其監控程序PROGRAM_A。各從DSP則設置為SPI從引導方式,等待主DSP完成其自身引導后,再將監控程序PROGRAM_B通過SPI口寫入從DSP中。完成引導后主/從DSP分別進入各自的監控狀態。 3.2 多DSP系統監控工作機制 此系統中,PC機對主DSP的監控機制與單DSP系統相似,但是PC機監控軟件向主DSP發送監控命令時,在命令字節中添加了DSP的ID信息,ID0~ID4分別對應DSP0~DSP4。主DSP接收到命令字節后提取出其中的ID信息,判斷用戶所期望的DSP代碼,如果是對主DSP自身的監控命令,則按照單DSP系統的監控機制進行操作;如果是對某一從DSP的監控命令,則主DSP選中相應的從DSP,并通過SPI口將監控命令發往相應的從DSP,從DSP在執行完用戶所要求的監控功能后將結果通過SPI口發往主DSP,再由主DSP發送給PC機監控服務軟件。從而實現用戶對系統中各DSP的靈活管理。 對于不帶SPI接口的DSP,也完全可以采用其他各種通訊接口作為主DSP與從DSP之間的接口。 4 結束語 本文探討和研究了ADI公司SHARC系列DSPADSP-21262的監控原理和實現機制。并以單DSP和多DSP系統為例,分別詳細介紹了以UART口作為監控接口的監控設計方法。此方法也完全適用于其他各類DSP的監控實現。 用戶可以根據系統需要和DSP所能提供的資源采用其他的監控方法:例如PC與主DSP之間的監控接口可以選擇為USB口、網口等;而主DSP與從DSP之間的通訊也能通過其他各類總線,例如并行的數據/地址總線、同步串口、I2C、HPI、LINK等,完全取決于用戶的需要,十分靈活方便。 |