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