前言
DSP系統(tǒng)的引導(dǎo)裝載是指在系統(tǒng)加電時,由DSP將一段存儲在外部非易失性存儲器中的代碼移植到內(nèi)部高速存儲器單元并執(zhí)行的過程。這種方式即可利用外部存儲單元擴(kuò)展DSP本身有限的ROM資源,又能充分發(fā)揮DSP內(nèi)部資源的高速效能。因此,引導(dǎo)裝載系統(tǒng)的性能直接關(guān)系到整個DSP系統(tǒng)的可靠性和處理速度,是DSP系統(tǒng)設(shè)計中必不可少的重要環(huán)節(jié)。在裝載系統(tǒng)中,外部非易失性存儲器和DSP的性能尤為重要。FLASH是一種高密度、非易失性的電可擦寫存儲器,而且單位存儲比特的價格比傳統(tǒng)EPROM要低。為此,本文介紹了TMS320C6713浮點(diǎn)DSP芯片和SST公司提供的SST39VF400A FIASH存儲器的基本特點(diǎn),給出了使用該FLASH存儲器設(shè)計和實(shí)現(xiàn)完整的TMS320C6713 DSP引導(dǎo)裝載系統(tǒng)的具體方法。
1 硬件設(shè)計
1.1主要芯片介紹
DSP自動引導(dǎo)裝載系統(tǒng)主要使用DSP芯片(TMS320C6713)和外擴(kuò)存儲器(SST39VF400A)兩種芯片來實(shí)現(xiàn)。其中TMS320C6713是一款高性能的32位浮點(diǎn)DSP,適用于專業(yè)音頻信號處理。該芯片的內(nèi)部結(jié)構(gòu)是在TMS320C62XX的基礎(chǔ)上加以改進(jìn)制成的。其內(nèi)部集成了多個功能單元,并采用了先進(jìn)的VLIW體系結(jié)構(gòu)及流水線技術(shù);它采用3.3 V的I/O電壓和1.8 V的內(nèi)核電壓供電方式。并具有兩級cache緩存結(jié)構(gòu)。除此之外,它還有以下兩個主要特點(diǎn):
第一是運(yùn)行速度快。德州儀器公司(TI)推出的這一款300 MHz的TMS320C6713數(shù)字信號處理器(DSP)的處理速度高達(dá)1800 MFLOPS。TMS320C6713可以使用的工作時鐘和對應(yīng)指令周期表如表1所列。
其次是精度高。TMS320C6713有三個因素影響著浮點(diǎn)格式的內(nèi)在高精度。首先,浮點(diǎn)DSP的24位I/O字長在整數(shù)與實(shí)數(shù)值方面可實(shí)現(xiàn)比定點(diǎn)器件中常用的16位字長更高的精確度。第二,取冪大幅提高了應(yīng)用可用的動態(tài)范圍,較大的動態(tài)范圍對處理極大數(shù)據(jù)集以及難以方便預(yù)計數(shù)據(jù)集范圍的情況相當(dāng)重要。第三,硬件內(nèi)部的浮點(diǎn)數(shù)據(jù)表示法比定點(diǎn)器件更為精確,這就保證了最終結(jié)果的更高精確度。
SST39VF400A是SST公司推出的FLASH存儲器。該器件十分適合用作外擴(kuò)存儲器,它的存儲容量為4 MB,采用3.3 V單電源供電,因而無需額外提供高電壓即可通過一些特殊的命令字序列來實(shí)現(xiàn)對各個子模塊的讀寫和擦除,并可重復(fù)十萬次以上,此外,還可通過I)SP編程來實(shí)現(xiàn)對它的讀寫操作,十分適合于系統(tǒng)的調(diào)試和開發(fā)。
1.2系統(tǒng)硬件接口設(shè)計
DSP訪問片外存儲器主要通過外部存儲器接口(EMIF)完成。它不儀具有很強(qiáng)的接口能力(可以和各種存儲器直接接口),而且具有很高的數(shù)據(jù)吞吐能力(高達(dá)l 200 MB/s)。TMS320C6713的EMIF能支持8位、16位和32位寬的所有存儲器,當(dāng)從這些窄位寬的存儲空間讀寫數(shù)據(jù)時,EMIF會將多個數(shù)據(jù)打包成一個32位的值,而不必增加額外電路。TMS320C6713與SST39VF400的接口電路設(shè)計如圖1所示。該電路主要通過DSP的相關(guān)輸出管腳來控制FLASH的擦除和讀寫。其中。A0~A19為地址線,DQ0~DQ15為數(shù)據(jù)線OE和WE分別為輸出使能和寫使能,CE1為片使能。由于TMS320C6713默認(rèn)的引導(dǎo)模式是從外部CEl空間的16位FLASH來引導(dǎo)裝載,所以,TMS320C6713的CEl和FLASH的片選CE相連。
2 軟件設(shè)計
本引導(dǎo)裝載系統(tǒng)主要由用戶應(yīng)用程序和FBTC (the FLASHBurn Targel Component)程序兩部分構(gòu)成,圖2所示是基于CCS的Flash存儲器燒寫系統(tǒng)框圖。其中,用戶程序除了要完成用戶設(shè)計要求外,還要對DSP板上的EMIF寄存器進(jìn)行設(shè)置;FBTC程序則包括FLASH存儲器燒寫算法、初始化操作、地址映射等。
2.1用戶程序設(shè)計
用戶可根據(jù)設(shè)計要求及實(shí)際算法編寫用戶主程序。除此之外,用戶還要根據(jù)自己的目標(biāo)板上存儲器分配進(jìn)行配置。TMS320C6713芯片上電后。若選擇從EMIF引導(dǎo)程序,DSP則自動將位于地址空間CE1(Ox90000000~Ox9FlFFFFFFl開頭的1KB代碼傳輸?shù)降刂房臻g0處。它的數(shù)據(jù)傳輸采用默認(rèn)時序,用戶可以選擇外部程序存儲器的寬度(8位/16位/32位),然后由EMIF自動將幾次讀入的數(shù)據(jù)合成為32位數(shù)據(jù)。傳輸由DSP中的ED-MA通道以單幀形式自動進(jìn)行。傳輸完成后,程序從地址0處開始運(yùn)行。因此,要在TMS320C6713中實(shí)現(xiàn)基于FLASH的自引導(dǎo)功能,必須將FLASH配置在DSP的CEl地址空間中。
在這里,用戶要編寫的EMIF配置文件是c6713- emif.s62,其程序設(shè)計代碼如下:
事實(shí)上,除了要對EMIF進(jìn)行配置外,用戶還必須在鏈接文件中為某些段制定兩個不同的地址:一個是導(dǎo)人地址,一個是運(yùn)行地址。導(dǎo)入地址用來決定裝載器把段的原始數(shù)據(jù)放在何處,而運(yùn)行地址就是該段代碼運(yùn)行的地址。制定兩個地址的目的是為了加快代碼執(zhí)行速度。它們的鏈接可由*.cmd文件來實(shí)現(xiàn)。對存儲器的設(shè)置如下:
IRAM:origin=00000000h length="0000FAooh" (內(nèi)部RAM)
FLASH-BOOT:origin=Ox90000000 length="00000400h" (存儲自舉代碼)
FLASH-REST:origin=0x90000400 length="000lfcOOh" (存儲主程序代碼等)
在完成用戶主程序、EMIF配置文件、鏈接命令文件后,就可利用TI公司的DSP集成開發(fā)環(huán)境CCS進(jìn)行編譯、調(diào)試及鏈接,以生成用戶應(yīng)用程序的目標(biāo)文件*.OUt。
2.2 FBTC程序的設(shè)計
FBTC程序主要是針對DSP目標(biāo)板上的FLASH存儲器進(jìn)行操作。即通過一定的編程命令序列來控制FLASH的工作方式。這些命令序列是一些特定字符的組合,只要向FLASH中的特定寄存器以特定的順序輸入這些字符,即可進(jìn)人相應(yīng)的編程模式。SST39VF400中的主要命令和寫入地址如表2所列。FBTC程序主函數(shù)的狀態(tài)圖如圖3所示。
圖3中的信息處理函數(shù)可依據(jù)FlashBurn編程協(xié)議提供的信息格式來設(shè)計;命令處理函數(shù)主要包括FLASH的擦除、讀取和燒寫。同樣的,F(xiàn)BTC程序設(shè)計完成后,也可利用TI公司的DSP集成開發(fā)環(huán)境CCS進(jìn)行編譯、調(diào)試及鏈接,從而生成FBTC程序的目標(biāo)文件*.out。
3 FLASH的燒寫
對FASH存儲器進(jìn)行燒寫一般有以下幾種方法:一是通過編程器燒寫;二是通過開發(fā)商提供的專門燒寫軟件工具進(jìn)行燒寫;三是自己編寫燒寫程序通過DSP燒寫。本文是通過TI公司提供的FlashBum軟件來對FLASH存儲器進(jìn)行燒寫。將FlashBum與CCS、HEX文件轉(zhuǎn)換工具以及FBTC配合使用,可以方便快捷地將用戶數(shù)據(jù)與程序?qū)懭隖LASH存儲器。FlashBurn采用圖形化界面,使用方便,用戶只要簡單配置幾個操作參數(shù),即可實(shí)現(xiàn)對FIASH存儲器進(jìn)行擦除、燒寫和查看內(nèi)存內(nèi)容等多項(xiàng)功能操作。其具體步驟如下:
(1) 編寫用戶程序,通過CCS編譯、鏈接生成目標(biāo)文件user.out:
(2) 編寫FBTC程序,通過CCS編譯、鏈接以生成目標(biāo)文件FBTC.out:
(3) 編寫hex6x命令文件(*.cmd),并利用hex6x來執(zhí)行這個文件,然后將用戶目標(biāo)文件user.out轉(zhuǎn)換為十六進(jìn)制格式usei.hex。
hex6x命令文件如下:
use.out
-a
-memwidth 8
-image
-map user.map
ROMS
{
FLASH:org=0x90000000,len=Ox0040000,
romwidth="8",files={user.hex}
}
SECTTONS
{
.boot_load/*:PADDR=Ox90000000*/
.text
.cinit
}
(4) 打開FlashBurn軟件,新建一個*.cdd文件并設(shè)置,其設(shè)置示意圖如圖4所示;
(5) 裝載FBTC.out,然后再擦除和燒寫FASH;
(6) 去掉仿真器并復(fù)位DSP目標(biāo)板,以使程序自動加載運(yùn)行。
4 結(jié)束語
按照上述步驟將用戶應(yīng)用程序成功下載到FLASH后,再將DSP目標(biāo)板脫離仿真器并重新上電復(fù)位,其用戶應(yīng)用程序便可正常運(yùn)行。而且FLASH擦除和燒寫速度比較快。該方法成功解決DSP程序的脫機(jī)引導(dǎo)加載問題。事實(shí)上,根據(jù)不同的應(yīng)用,也可以參考本設(shè)計中實(shí)現(xiàn)方法,以求簡單、有效地解決FLASH存儲器的自舉問題。