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

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

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