TMS320VC54系列EPROM的加載實(shí)現(xiàn)
摘要:文中介紹了TMS320VC5000系列DSP的各種加載方法。并結(jié)合實(shí)例,著重介紹了其中C5402的EPROM加載方式和實(shí)現(xiàn)過程,提出了實(shí)際中應(yīng)注意的問題。另外,也對(duì)8位EPROM加載過程及自舉表作了詳細(xì)的介紹。
本文引用地址:http://m.butianyuan.cn/article/242321.htm關(guān)鍵詞:數(shù)字信號(hào)處理器(DSP) 程序加載 TMS320VC54 自舉表
DSP芯片(數(shù)字信號(hào)處理器)已成為人們?nèi)找骊P(guān)注并得到迅速發(fā)展的具有前關(guān)沿技術(shù)的一種集成電路,而且已得到越來越廣泛的應(yīng)用。TI公司推出的5000系列DSP具有高性能、低功耗等優(yōu)良性能,一推出就得到了用戶的歡迎。5000系列DSP被廣泛應(yīng)用于電信、雷達(dá)、儀器儀表、圖像處理等許多方面。其應(yīng)用范圍的廣泛性決定了必須有靈活多樣的加載方式與之相適應(yīng)。正因?yàn)槿绱耍募虞d方式也較單片機(jī)的加載要復(fù)雜的多。為了能讓讀者對(duì)DSP的各種加載方法有個(gè)初步的了解和今后應(yīng)用的方便,本文立足實(shí)際經(jīng)驗(yàn),簡單介紹了各種加載方法,并較為詳細(xì)地介紹了EPROM并行加載方法及應(yīng)注意的問題。
1 DSP的各種加載方式
C5000系列可提供的加載方式有以下幾種:
●主機(jī)端口(HPI)加載
程序的執(zhí)行代碼由主機(jī)通過主機(jī)接口(HPI)加載到DSP的片內(nèi)存儲(chǔ)器;
●并行加載
加載程序通過外部并行總線從數(shù)據(jù)空間讀取自舉表,自舉表內(nèi)包含有程序代碼部分、每部分代碼的目的地址、加載成功后程序的執(zhí)行地址以及其它一些配置信息;
●標(biāo)準(zhǔn)串口加載
加載程序通過多通道緩沖串口(McBSP)來接收自舉表,并根據(jù)自舉表中的信息來加載代碼。McBSP0支持16位的串行接收方式,McBSP1支持8位的串行接收方式;
●8位或16位I/O加載
加載程序通過使用異步握手協(xié)議從I/O的OH口讀取自舉表;
●8位串口EEPROM加載
加載程序從一個(gè)連接到McBSP1的串行EEPROM來接收數(shù)據(jù)。
2 C5000的加載過程
C5000系列加載程序已固化在ROM內(nèi)。在硬件復(fù)位期間,如果DSP的MP引腳為高是平,系統(tǒng)就從外部程序存儲(chǔ)器FF80H執(zhí)行用戶程序;若MP為低電平,系統(tǒng)則從片內(nèi)ROM的FF80H開始執(zhí)行程序,同時(shí)選擇加載方式。C5000的具體加載過程如下:
(1)首先,在自舉加載前對(duì)其進(jìn)行初始化,其中包括:使中斷無效(INTM=1),內(nèi)部RAM映射到程序/數(shù)據(jù)區(qū)(OVLY=1),對(duì)程序和數(shù)據(jù)區(qū)均設(shè)置七個(gè)等待狀態(tài)等。
(2)檢查INT2,決定是否從HPI中載。主機(jī)接口(HPI)是利用INT2進(jìn)行自舉加載的。如果沒有INT2信號(hào),說明不是HPI加載。
(3)檢查INT3決定是否進(jìn)行串行EEPROM加載。如果DSP檢測(cè)到INT3信號(hào),則進(jìn)行串行EEPROM加載,否則轉(zhuǎn)到(4)。
(4)從I/O空間的FFFFH處讀取源地址,如果是有效的地址,則進(jìn)行并行加載;否則從數(shù)據(jù)空間的FFFFH處讀取源地址,如果地址有效,也可進(jìn)行并行加載;若兩種情況都不是則轉(zhuǎn)到(5)。
(5)初始化串口,置XF為低。若McBSP1接收到一個(gè)數(shù)據(jù),先檢查是否是有效的關(guān)鍵字,若是則通過McBSP1進(jìn)行串口加載,否則檢查McBSP0,其過程與McBSP1相同。
(6)檢測(cè)BID引腳是否為低,若為低再檢查是否為有效的關(guān)鍵字,若是則進(jìn)行I/O加載,否則檢測(cè)是否是有效的入口點(diǎn),若是,則轉(zhuǎn)入入口點(diǎn),若都不是則跳到(5)。
下面通過一個(gè)具體的例子來詳細(xì)介紹一下EPROM并行加載過程,DSP選用TMS320VC5402(5402提供4k 16bit的掩模ROM),EPROM選用27C256。
由TMS320V5402和27C256所構(gòu)成的程序加載電路如圖1所示。圖中74LVC245的作用是將27C256輸出的TTL電平轉(zhuǎn)換成TMS320VC5402能接收的電平。它還對(duì)DSP起到保護(hù)作用。若去掉274LVXC245,則會(huì)燒壞5402。
27C256的輸出使能控制線(OE)用來控制器件的有效或無效(雙側(cè)相互隔離)。
74LS08將27C256的地址定為8000H~FFFFH。LVC245的DIR端接DSP的R/W端。27C256垢CS端接74LS08的譯碼輸出,OE端接低電平信號(hào)。在這種加載方式中,EPROM是作為TMS320VC5402的片外數(shù)據(jù)區(qū),用戶程序是通過片內(nèi)固化的加載程序讀入到片內(nèi)程序區(qū)來完成加載的。
3 8位EPROM加載過程
當(dāng)檢測(cè)到不是串行EEPROM加載時(shí),加載程序則轉(zhuǎn)入并行加載方式。此時(shí)加載程序從并口(外部存儲(chǔ)器)傳輸代碼到程序空間,支持8位和16位加載。另外,程序也可自動(dòng)配置SWWSR(軟件等待狀態(tài)寄存器)和BSCR(分區(qū)轉(zhuǎn)換控寄存器),使之與不同加載方式相適應(yīng),從而使DSP能與不同速率的EPROM相連接。考慮到高速器件與低速器件的匹配問題,加載程序使用默認(rèn)的七個(gè)等待周期。
加載程序能從I/O空間的0FFFFH和數(shù)據(jù)空間的0FFFFH處獲取代碼的首地址。通常,從數(shù)據(jù)空間獲取代碼的首地址較方便。因?yàn)樵跀?shù)據(jù)空間不需要另擴(kuò)I/O空間,同時(shí)又可增加電路改動(dòng)的靈活性。對(duì)5402來說,自舉表可以位于4000H~FFFFH處的任何位置。圖2詳細(xì)描述了EPROM加載過程。
應(yīng)當(dāng)注意的是:如果不用并行加載方式,D0必須通過一個(gè)小的上拉電阻置為高電平,以此來避免加載程序從數(shù)據(jù)空間讀到0AAH關(guān)鍵字。另外,加載程序事先并不知道存儲(chǔ)器的寬度,所以它要同時(shí)檢查存儲(chǔ)器的低位(0FFFFH)和高位(0FFFFH)以獲取正確的源地址。
4 自舉表
自舉表的頭部是關(guān)鍵字(08AA或10AA),加載程序就是根據(jù)它來判斷是16位還是8位加載方式;接著的兩個(gè)字是SWWSR和BSCR的值;第四和第五個(gè)字程序代碼的入口點(diǎn)(即加載以后程序執(zhí)行的首地址);接著是第一段代碼的長度以及它的目的地址;緊跟著是另一段代碼;依此類推,最后是0000H,這是自舉表的結(jié)束標(biāo)志。表1為自舉表的結(jié)構(gòu)。
表1 自舉表的結(jié)構(gòu)圖
08AAh or 10AAh |
Initialize value of SWWSR 16 |
Initizlixe value of BSCR 16 |
Entry point (XPC)7 |
Entry point(PC)16 |
Size of first section 16 |
Destination of first section (XPC)7 |
Destination of first section (PC)16 |
Code word(1)16 |
… |
… |
Code word(N)16 |
Size of last section 16 |
Destination of last section(XPC)7 |
Destination of section (PC)16 |
Code word(1)16 |
Code word(N)16 |
0000h |
筆者將結(jié)合實(shí)例,介紹一下自舉表的建立。
假設(shè)用戶編制的源程序文件為radar.asm,鏈連器命令文件為radar.cmd,生成的COFF文件為radar.out,最后生成的INTEL的十六進(jìn)制文件為radar.hex,用戶可以通過EPROM編程器將它燒錄到EPROM中。
(1)首先,使用編譯器對(duì)應(yīng)用程序進(jìn)行編譯。值得注意的是必須在編譯器的命令行上加-V548選項(xiàng),若遺忘了這個(gè)選項(xiàng),以后HEX轉(zhuǎn)換工具將會(huì)產(chǎn)生C54早期版本的自舉表,而不提供任何錯(cuò)誤與警告信息。這個(gè)錯(cuò)誤極其隱蔽,務(wù)必注意。
例:asm500radar.asm-1-s-x-v548
(2)第二步,對(duì)第一步產(chǎn)生的目標(biāo)文件進(jìn)行鏈接。在鏈接過程中,鏈接器將各個(gè)目標(biāo)文件合并,并完成以下工作:
●將各個(gè)段配置到目標(biāo)系統(tǒng)的存儲(chǔ)器;
●對(duì)各個(gè)符號(hào)和段進(jìn)行重新定位,并給它們指定一個(gè)最終的地址;
●解決輸入文件之間未定義的外部引用。
例:Lnk500 radar.cmd-o radar.out
(3)最后,運(yùn)行HEX代碼轉(zhuǎn)換工產(chǎn)生自舉表。十六進(jìn)制轉(zhuǎn)換程序可以很方便的將COFF目標(biāo)文件轉(zhuǎn)換成TI,INTEL,MOTOROLA或TEKTRONIX公司的目標(biāo)文件格式。轉(zhuǎn)換后生成的文件下載到EPROM編程器。
例:Hex500 radar.out -I - o radar.hex - memwidth 8 -romwidth 8 -boot -bootorg 0x0000
注意:為了保證加載的成功率,用戶編制的程序代碼前面應(yīng)加上對(duì)DSP的各個(gè)狀態(tài)寄存器進(jìn)行初始的程序段。
評(píng)論