|
|
| <!--插入廣告JS代碼--> |
作者:潘明海、岳增龍 單位:燕山大學(xué)
引言
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,數(shù)字信號(hào)處理器(DSP;Digital Signal Processor)技術(shù)的應(yīng)用范圍不斷擴(kuò)大,幾乎遍及整個(gè)電子、信息產(chǎn)業(yè)。其中應(yīng)用最廣泛的是TI公司生產(chǎn)的DSP系列產(chǎn)品。在這種DSP系列的系統(tǒng)設(shè)計(jì)中,引導(dǎo)裝載系統(tǒng)的設(shè)計(jì)是其中的難點(diǎn)之一。
DSP系統(tǒng)的引導(dǎo)裝載(BootLoad)是指在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),用戶程序通常保存在非易失的ROM存儲(chǔ)器中,如EPROM、Flash 等,而這些存儲(chǔ)器的訪問速度較慢,一般不能直接作為程序存儲(chǔ)器來使用,因此需要在系統(tǒng)加電時(shí),將一段存儲(chǔ)在外部非易失性存儲(chǔ)器上的程序代碼引導(dǎo)搬移到 DSP內(nèi)部的高速程序存儲(chǔ)器RAM 或片外SRAM 中來運(yùn)行這樣設(shè)計(jì)的優(yōu)點(diǎn)有三個(gè):一是利用了外部的存儲(chǔ)單元擴(kuò)展了DSP本身有限的 ROM資源;二是充分發(fā)揮了DSP內(nèi)部資源的效能;三是省去了對(duì)DSP 片內(nèi)ROM進(jìn)行掩膜編程操作,節(jié)省大量費(fèi)用。它可以在不使用昂貴的快速ROM的情況下獲得高速運(yùn)行的能力。由于從 ROM裝入程序時(shí)可以采用8/16/32位格式,這給硬件設(shè)計(jì)帶來了很大的方便,可以在基本不降低運(yùn)行性能的條件下減少芯片,壓縮體積,降低成本。
Flash存儲(chǔ)器具有低功耗,大容量,擦寫速度快等特點(diǎn),并且由內(nèi)部嵌入的算法實(shí)現(xiàn)對(duì)芯片的操作,因而在DSP系統(tǒng)中得到了廣泛的應(yīng)用。DSP程序主要有兩種存放方式:一種是在硬件系統(tǒng)中帶有一定數(shù)量的E2PROM,供DSP程序存放用;另一種方案是將程序存放在PC機(jī)中,在系統(tǒng)啟動(dòng)過程中將程序傳至DSP的RAM中。對(duì)于第一種情況主要適用于程序數(shù)量不太大,而且不需要經(jīng)常變動(dòng)的情況。但是對(duì)于系統(tǒng)需要完成多項(xiàng)處理任務(wù),第二種情況可以適用于不同的用戶要求運(yùn)行不同的程序的情況,為了設(shè)計(jì)比較通用的信號(hào)處理系統(tǒng),一般采用第二種情況。本文通過一個(gè)振動(dòng)控制系統(tǒng)為例,詳細(xì)介紹了一種基于USB實(shí)現(xiàn)TMS320C32Bootload的方案設(shè)計(jì)和實(shí)現(xiàn)過程。
1.Bootload的引導(dǎo)裝載過程
在系統(tǒng)上電復(fù)位或手動(dòng)復(fù)位之后,首先檢查MCBL/MP引腳的電平,若為高電平,說明DSP處于微處理器工作方式,即從外部程序存儲(chǔ)器開始執(zhí)行用戶程序,若為低電平,DSP 處于微計(jì)算機(jī)工作方式,此時(shí)系統(tǒng)如果未接在仿真器上,那么芯片自動(dòng)運(yùn)行固化在 0H-FFFH中的引導(dǎo)裝載程序(如圖1所示),這一程序會(huì)自動(dòng)判斷是INT0~INT2或INT3中斷,如果是INT0~INT2中斷,DSP將存放在 BOOT1~BOOT3中的一段程序裝載到片內(nèi)RAM或片外SRAM中,如果是INT3中斷,則DSP將從串口中將程序裝載到片內(nèi)RAM或片外SRAM中。

圖1 引導(dǎo)裝載程序方式選擇流程圖
2.系統(tǒng)簡(jiǎn)介
隨著 DSP技術(shù)的廣泛應(yīng)用,一般采用專用的DSP處理器來完成信號(hào)采集和處理,利用PC機(jī)進(jìn)行運(yùn)行控制、參數(shù)設(shè)置、圖形顯示、數(shù)據(jù)存儲(chǔ)等。這種結(jié)構(gòu)對(duì)于數(shù)據(jù)的高速通訊傳輸和實(shí)時(shí)處理有很高的要求,所以DSP處理器和 PC機(jī)之間的接口方式顯得尤為重要。DSP處理器與PC機(jī)之間的數(shù)據(jù)通訊接口方式很多,如早期的串行口、并行口以及目前比較流行的PCI、USB和1394等。其中USB總線接口具有方便快捷、支持即插即用、可實(shí)現(xiàn)高速數(shù)據(jù)通訊等優(yōu)點(diǎn),在很多領(lǐng)域得到廣泛應(yīng)用。USB有三種傳輸速率:1.5Mb/s的低速傳輸,12Mb/s的全速傳輸和480Mb/s的高速傳輸。USB電纜線只有4 根,兩根是電源線,傳送5V電源,可用來向設(shè)備供電;另外兩根是信號(hào)線,用來傳輸串行數(shù)據(jù)。與傳統(tǒng)的接口比較,USB具有傳輸速度更快、集成化程度更高、編程化更好以及能夠支持多個(gè)設(shè)備等優(yōu)點(diǎn)。
因此在我們的設(shè)計(jì)中用它來和主機(jī)接口實(shí)現(xiàn)高速的數(shù)據(jù)通信。FPGA 現(xiàn)場(chǎng)可編程門陣列有單片機(jī)和DSP無法比擬的優(yōu)勢(shì),時(shí)鐘頻率高、內(nèi)部時(shí)延小;速度快,效率高;組成形式靈活,可以集成外圍控制、譯碼和接口電路。因此,在本系統(tǒng)中我們用 FPGA 來實(shí)現(xiàn)系統(tǒng)的邏輯控制,系統(tǒng)結(jié)構(gòu)框圖如圖2 所示。在該振動(dòng)測(cè)控系統(tǒng),下層主要是由FPGA以及兩塊DSP(主,輔)組成的,其中主輔DSP能夠通過雙口RAM通信。

圖2 系統(tǒng)結(jié)構(gòu)框圖
3. 系統(tǒng)引導(dǎo)裝載實(shí)現(xiàn)過程
由于在實(shí)際應(yīng)用中要實(shí)現(xiàn)不同類型的試驗(yàn),而傳統(tǒng)的Bootload受內(nèi)存大小的限制,不能同時(shí)將所有的不同試驗(yàn)類型的程序一次裝載,所以就不能用傳統(tǒng)的Bootload方法,我們可以將各種不同的實(shí)驗(yàn)程序存放在上機(jī)位中,通過USB接口將需要的實(shí)驗(yàn)程序下載到DSP的擴(kuò)展SRAM中,這樣就可按照實(shí)時(shí)需要根據(jù)不同的試驗(yàn)類型裝載不同的下層程序,而且可以輕松實(shí)現(xiàn)系統(tǒng)下層程序的軟件升級(jí)。
實(shí)現(xiàn)過程中的程序主要分為兩個(gè)部分:
第一部分:通過USB下載的DSP實(shí)驗(yàn)程序,這部分實(shí)驗(yàn)程序只能是系統(tǒng)的某一個(gè)或幾個(gè)子程序模塊。在系統(tǒng)的上層主要程序中,我們按照COFF文件信息的構(gòu)成規(guī)則分析出信息中有幾段數(shù)據(jù)包以及數(shù)據(jù)包的長(zhǎng)度和存儲(chǔ)地址,然后在命令數(shù)據(jù)前加入命令類型、主輔標(biāo)志、數(shù)據(jù)的長(zhǎng)度、存儲(chǔ)地址等附加信息,這樣就實(shí)現(xiàn)了數(shù)據(jù)的封包,其中包頭主要包括命令類型,主輔標(biāo)志、數(shù)據(jù)長(zhǎng)度、存儲(chǔ)地址。
例如可以將下傳數(shù)據(jù)的命令類型設(shè)為00000003,主輔DSP的標(biāo)志分別設(shè)為00000001、00000002或者其它數(shù)值。將打包的數(shù)據(jù)通過USB接口發(fā)送給主或輔DSP后,DSP的駐留程序?qū)?duì)接收到的數(shù)據(jù)進(jìn)行分析,通過判斷不同的命令類型進(jìn)而完成不同實(shí)驗(yàn)程序的加載和實(shí)現(xiàn)。
在本系統(tǒng)中,我們還將上機(jī)位與DSP之間的USB數(shù)據(jù)傳輸部分做成ActiveX控件,這樣就可以在程序中重復(fù)使用,進(jìn)一步提高運(yùn)行效率。
第二部分:FLASH中的主引導(dǎo)程序,該部分程序?qū)崿F(xiàn)的主要功能:
(1)對(duì)接收到的數(shù)據(jù)分析得到主輔標(biāo)志、數(shù)據(jù)長(zhǎng)度、存儲(chǔ)地址;
(2)能夠?qū)⒅鱀SP程序直接下載到擴(kuò)展SRAM,而輔DSP程序通過主DSP的雙端口RAM下載程序,但是程序下載可以不分主輔的次序,任意下載;
(3)下載完成后需要向上層程序發(fā)送接收完畢的信號(hào);
(4)將程序的入口地址下傳,實(shí)現(xiàn)下傳程序的跳轉(zhuǎn);
(5)向上層程序發(fā)送跳轉(zhuǎn)完畢的信號(hào)。
在系統(tǒng)初始化(上電自舉)過程中,DSP的程序存儲(chǔ)器中駐留的程序主要就是這部分FLASH中的程序,這部分程序是在系統(tǒng)上電復(fù)位時(shí)自動(dòng)加載進(jìn)去的。
例如:在空閑時(shí)對(duì)@indatasign進(jìn)行掃描,上層將發(fā)出信號(hào)標(biāo)志寫入@indatasign,當(dāng)判別有信號(hào)輸入時(shí),程序調(diào)用readusb子程序,將上層下傳得數(shù)據(jù)寫入輸入緩沖區(qū),寫入完成后對(duì)數(shù)據(jù)進(jìn)行分析。
首先,程序進(jìn)入begin段,在begin這一段完成數(shù)據(jù)分析后得到下傳數(shù)據(jù)的主輔標(biāo)志,并對(duì)其進(jìn)行判斷。
如果標(biāo)識(shí)為00000001,說明下傳的數(shù)據(jù)是發(fā)給主DSP的,則調(diào)用firstdsp程序。根據(jù)上層下傳數(shù)據(jù)的格式,分別得到數(shù)據(jù)在主DSP中應(yīng)存儲(chǔ)的地址以及數(shù)據(jù)的長(zhǎng)度。在程序中將這兩個(gè)信息取出后,依次將數(shù)據(jù)存儲(chǔ)到主DSP相應(yīng)的存儲(chǔ)空間中。在存儲(chǔ)完畢后,將調(diào)用implementok子程序,向上層程序發(fā)送接收完畢的信號(hào)。
如果標(biāo)識(shí)為00000002,說明下傳的數(shù)據(jù)是傳給輔DSP的,則調(diào)用secondsp子程序。這部分程序?qū)⒊鬏o標(biāo)識(shí)以外的所有數(shù)據(jù)存儲(chǔ)到雙端口RAM中,存儲(chǔ)完畢后,程序?qū)?huì)向輔DSP的郵箱地址發(fā)送信號(hào),通知輔DSP從雙端口RAM中讀取數(shù)據(jù)。當(dāng)輔DSP接收到信號(hào)后,將會(huì)執(zhí)行和主DSP類同的程序,將存儲(chǔ)地址、數(shù)據(jù)長(zhǎng)度以及數(shù)據(jù)依次接收并存儲(chǔ)到輔DSP相應(yīng)的RAM中。存儲(chǔ)完畢后,輔DSP將向郵箱地址發(fā)送一個(gè)信號(hào),程序?qū)⑦@個(gè)信號(hào)存儲(chǔ)到數(shù)據(jù)準(zhǔn)備好中并對(duì)其進(jìn)行判斷,如果是接收完畢的信號(hào),則主程序?qū)⒄{(diào)用implementok子程序,向上層程序發(fā)送接收完畢的信號(hào)。
4.實(shí)驗(yàn)測(cè)試結(jié)果
在實(shí)驗(yàn)中,該高精度測(cè)控系統(tǒng)利用上述方法在加電復(fù)位后可以按照需要,根據(jù)不同的試驗(yàn)類型裝載不同的下層程序,通過上位機(jī)裝載并實(shí)現(xiàn)試驗(yàn)程序,達(dá)到了系統(tǒng)的設(shè)計(jì)要求。
5.結(jié)束語
本文詳細(xì)介紹了一種利用USB接口實(shí)現(xiàn)C32系統(tǒng)引導(dǎo)裝載的新方法,通過實(shí)驗(yàn)該設(shè)計(jì)方法具有很強(qiáng)的實(shí)用性和通用性,可以為其它芯片的引導(dǎo)裝載提供參考,在測(cè)控、信號(hào)處理、算法的驗(yàn)證以及實(shí)時(shí)仿真方面有著較好的使用價(jià)值。
參考文獻(xiàn)
[1]王念旭.DSP基礎(chǔ)與應(yīng)用系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2001:428-478
[2]張雄偉.DSP芯片的原理與應(yīng)用.北京:電子工業(yè)出版社,1997:1-8
[3]劉慧等.多核DSP的BOOTLOADER程序的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2003(6):21-22.
[4]王迎璽.TMS320C32與計(jì)算機(jī)通信.山西電子技術(shù),2003,(6):17-19
[5]TMS320C3X User Guide. Texas Instruments, 1990:1-302
[6]丁玉美,高西全.數(shù)字信號(hào)處理.西安:西安電子科技大學(xué)出版社,2000:242-259
[7]宗孔德.多抽樣率信號(hào)處理.北京:清華大學(xué)出版社,1996:84-111
[8]蘇濤,藺麗華,盧光躍,張林讓.DSP實(shí)用技術(shù),西安:西安電子科技大學(xué)出版社,2002.6