基于C語言設(shè)置TMS320 DSP中斷向量表_第1頁
基于C語言設(shè)置TMS320 DSP中斷向量表_第2頁
基于C語言設(shè)置TMS320 DSP中斷向量表_第3頁
基于C語言設(shè)置TMS320 DSP中斷向量表_第4頁
基于C語言設(shè)置TMS320 DSP中斷向量表_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于C語言設(shè)置TMS320 DSP中斷向量表摘要:隨著DSP芯片應(yīng)用的不斷深化,用語言開發(fā)DSP芯片,不僅可以使DSP芯片的開發(fā)速度大大進(jìn)步,也使得程序的修改和移植變得非常方便。語言設(shè)置TS320系列DSP中斷向量表是高級語言開發(fā)DSP的一個(gè)詳細(xì)應(yīng)用。關(guān)鍵詞:語言,中斷,中斷向量表,DSP。SettingTS320DSPInterruptVetrsTableinAbstratAlngiththedevelpentfDSPhip,theexpliturefDSPinntnlyaeleratetheevlutinfDSP,butalsaketheprgraeasytdifyandtransplan

2、t.ThisisapratieappliatinthatsettingTS320DSPinterruptvetrstablein.Keyrdslanguage,Interrupts,Interruptvetrtable,DSP.1、引言DSP數(shù)字信號處理器自二十世紀(jì)70年代末80年代初誕生以來,得到了突飛猛進(jìn)的開展,在信號處理、通訊、雷達(dá)等方面應(yīng)用越來越廣泛,而且開發(fā)手段和開發(fā)設(shè)備也越來越多樣化。其中語言在DSP開發(fā)應(yīng)用中起著越來越重要的作用,以語言編寫的DSP應(yīng)用程序具有可讀性、可移植性,易于維護(hù)和修改。另外在DSP應(yīng)用系統(tǒng)中,中斷是完成數(shù)據(jù)傳遞、實(shí)時(shí)處理等的重要手段,因此用語言完成對DSP

3、中斷設(shè)置是DSP開發(fā)的重要內(nèi)容。DSP中斷的設(shè)置主要包括中斷效勞程序的編寫,中斷向量表的設(shè)置,中斷存放器的初始化等內(nèi)容。本文以TI公司TS320系列DSP為例,說明用語言設(shè)置中斷向量表的方法。并給出實(shí)例進(jìn)展說明。2、中斷向量表的定位中斷效勞程序的地址中斷向量要裝載到存儲器的適宜區(qū)域。一般這些向量都定位在0 x0開場的程序存儲器中。但有些處理器要求或者可以在其他的存儲區(qū)域安裝中斷向量。對于微處理器形式下的TS32025、TS32026、TS32028、TS32030、TS32031,中斷向量定位于0 x0開場的地址。對于微計(jì)算機(jī)/程序引導(dǎo)形式下的TS32031的中斷向量定位于0 x809f1,T

4、S32026的中斷向量定位于0 xffa0。TS3205X復(fù)位向量定位在0 x0,其他中斷向量可以定位于任何2K字的程序存儲器中,中斷向量表的定位是與PST存放器的IPTR位有關(guān),有效的中斷向量表的基地址是0 x0,0 x800,0 x1000,0 x1800,0 x2000,0 xf800。TS3204X的復(fù)位向量定位在四個(gè)地址之一,這四個(gè)地址由外部引腳RESETL0和RESETL1決定。TS3204X的中斷向量可存在于任何512字范圍的存儲器中,中斷向量表的地址由中斷向量表指針I(yè)VTP存放器決定。另外,TS3204X的自陷trap中斷向量可存放在512字范圍的存儲器中,自陷向量表的地址由自

5、陷向量表指針TVTP存放器決定。有效的中斷或者自陷向量表的基地址是0 x0,0 x200,0 x400,0 x800,0 xa00,0 x00,0 xe00,0 x1000,0 x12000 xfffffe00,如表1所示。有兩種方法可以初始化中斷向量表,下面講解這兩種方法:方法一:利用已命名的AS段生成向量表的最直接方法就是用匯編指令.set來生成一個(gè)表。這個(gè)表包含中斷向量的地址和跳轉(zhuǎn)指令。表1處理器向量表基地址說明TS3202X0 x0不包括微計(jì)算機(jī)/程序引導(dǎo)形式下的TS32026TS320260 xffa0微計(jì)算機(jī)/程序引導(dǎo)形式TS320300 x0TS320310 x0微處理器形式TS

6、320310 x809f1微計(jì)算機(jī)/程序引導(dǎo)形式TS3204X復(fù)位0 x0,0 x7fffffff,0 x80000000,0 xfffffff外部引腳RESETL0和RESETL1決定中斷向量任意512字范圍IVTP存放器決定自陷向量任意512字范圍TVTP存放器決定TS3205X復(fù)位0 x0中斷向量任意2K字?jǐn)?shù)據(jù)頁P(yáng)ST存放器的IPTR位決定在微計(jì)算機(jī)/程序引導(dǎo)形式下TS3202X、TS3205X和TS32031從中斷向量的位置處執(zhí)行代碼,因此要用跳轉(zhuǎn)指令來代替中斷向量,如TS32031用24位指令BR來實(shí)現(xiàn):INT1:BR_int01在微處理器形式下TS32030、TS32031和TS3

7、204X,中斷向量是下一條存取指令的地址,因此中斷效勞程序的地址用匯編指令.rd存儲在中斷向量處。例如,TS3204X中斷1可用匯編語言定義如下:INT1:.rd_int01因?yàn)橹袛嘈诘臉?biāo)識符在匯編語言模塊外部被聲明,所以標(biāo)識符必須用.ref或.glbal來聲明。下面的例子是一個(gè)匯編語言模塊ves.as定義了一個(gè)包含TS3205X跳轉(zhuǎn)指令的段。.ref_int0,_int1;在外部定義中斷向量.set“vetrs;聲明一個(gè)一命名的段RS:b_int0;轉(zhuǎn)至復(fù)位向量I1:b_int1;轉(zhuǎn)至中斷向量1處理保存和未使用的區(qū)域有時(shí)中斷向量表中包含保存的地址,例如微計(jì)算機(jī)/程序引導(dǎo)形式下的TS3202

8、6或者TS3204X和TS3205X的復(fù)位和中斷向量不連續(xù)的情形。TS32031也會發(fā)生這種情形,系統(tǒng)中并不是所有的中斷都能被用到。為了處理向量映象中的保存地址,就要使用匯編指令.spae。注意對于定點(diǎn)設(shè)備.spae保存的是位,對于浮點(diǎn)設(shè)備.spae保存的字。例如,微計(jì)算機(jī)/程序引導(dǎo)形式下TS32026,假設(shè)所有中斷都是可用的.set“vetrs;為復(fù)位和中斷向量定義已命名的段.spae2*16;保存的空間b_int1;INT0b_int2;INT1b_int3;INT2b_int4;TINTb_int5;RINTb_int6;XINTb_int7;TRAP注意.spae指令為復(fù)位向量保存的位

9、置在程序引導(dǎo)方式下不能使用,因?yàn)閺?fù)位會啟動程序引導(dǎo)功能。使用.spae時(shí)vetrs段鏈接到0 xfa00,不使用.spae指令該段鏈接到0 xfa02。但是,假如定時(shí)器和自陷中斷向量被使用時(shí),可用.spae指令對向量表進(jìn)展如下的定義:.set“vetrs;為復(fù)位和中斷向量定義已命名的段.spae2*4*16;保存的和3個(gè)未使用的向量b_int4;TINT.spae2*2*16;2個(gè)未使用的向量b_int7;TRAP注意在中斷和自陷向量表中未使用的局部可用來存儲數(shù)據(jù)。但為了保證中斷處理的正確,一定要確保中斷和自陷向量不被破壞。鏈接到存儲器映象已命名段產(chǎn)生后,TS320鏈接器就會把向量表鏈接到存儲

10、器的適宜位置,共分三步進(jìn)展:1.鏈接匯編語言模塊;2.根據(jù)中斷向量表的定位定義鏈接器的ERY段;3.在鏈接器的SETINS命令中,定位這些已命名的段。下面是TS3205X的命令文件,將vetrs定位到040h。-ves.bjain.bj-lrts50.libENRYPAGE0:VETRS:rigin=0000h,length=003fhR:rigin=0040h,length=007fhSETINS“vetrs:VETRS.text:R.方法二:安裝一個(gè)運(yùn)行時(shí)的向量這種方法在開發(fā)和調(diào)試時(shí)很有用的,這種方法是用語句在裝載中斷效勞程序地址時(shí)建立一個(gè)運(yùn)行時(shí)的向量。該方法適用于微處理器形式下的TS32

11、030和TS32031,以及TS3204X,因?yàn)樗鼈冎挥玫刂?,而不用跳轉(zhuǎn)指令作為中斷向量。其重點(diǎn)就是將中斷效勞程序的地址放到適宜的存儲器空間,例如,TS32030地址0 x1對應(yīng)于外部中斷0INT0,在該地址安裝中斷效勞程序_int01。使用如下語句“*(vid(*)()0 x1)=_int01;這里,0 x1被轉(zhuǎn)換成指向函數(shù)的指針,因?yàn)樗瘮?shù)_int01的地址。3、向量表指針TS3204X和TS3205X都可以不將中斷向量表放在0 x0開場的位置。這兩個(gè)系列的DSP都是由存放器來確定中斷向量的位置。TS3204X的復(fù)位向量地址是由處理器的引腳確定的四個(gè)地址中的一個(gè)。中斷可以被正確的處理,

12、首先必須在接收到中斷之前對中斷向量表進(jìn)展初始化。下面幾個(gè)例子是用來說明初始化與中斷有關(guān)的存放器的方法。例1:在中嵌入?yún)R編語句這個(gè)例子,利用在語言中嵌入?yún)R編語句來設(shè)置TS3204X的中斷向量,其起始地址為0 x0,方法是通過將IVTP存放器的值設(shè)置為0 x0。as(“PUSHR0);as(“LDI0h,R0);as(“LDPER0,IVTP);as(“PPR0);例2:利用TS3204X的PRTS這個(gè)例子,利用TS3204X的并行運(yùn)行支持庫來設(shè)置中斷向量表,起始地址為0 x02ff800,利用PRTS庫函數(shù)set_ivtp設(shè)置IVTP存放器的值使向量表定位于RA0存儲器的開場地址。當(dāng)使用PRTS

13、時(shí),不需要用戶命名中斷向量段,而是在運(yùn)行時(shí)使用PRTS函數(shù)install_int_vetr()將向量定位在預(yù)先定義的段.vetr中。這種方法要求向量在運(yùn)行時(shí)安裝,以防止程序和數(shù)據(jù)被修改。另外,首先要把PRTS庫鏈接到程序,并在命令文件中預(yù)先定義.vetr段,把.vetr段定位在R0存儲器的開場地址。命令文件如下所示:-lprts40.libERYRA0:rg=0 x2ff800,len=0 x400SETINS“.vetr:RA0主程序中必須包含頭文件intpt40.h。函數(shù)set_ivtp()使用預(yù)定義的參量DEFAULT才能被調(diào)要,這樣設(shè)置IVTP存放器可使.vetr段按命令文件中定義定位

14、。中斷向量可使用函數(shù)install_int_vetr()來安裝,如下所示:#inludeintpt40.hvid_int99(vid)fr(;);vidain(vid)set_ivtp(DEFAULT);install_int_vetr(vid*)_int99,2);例3:鏈接時(shí)指定TS3204X或TS3205X的符號當(dāng)TS3205X的編輯器中沒有PRTS庫而不能設(shè)置向量表指針時(shí),還有一個(gè)方便的方法可以到達(dá)同樣的目的。那就是使用在鏈接時(shí)指定符號的方法。這種方法的主要思想是利用包含復(fù)位和中斷向量的匯編語言段.set以及用鏈接器映射中斷向量在內(nèi)存中的分布。程序可以獲得這個(gè)地址并把它裝載到中斷向量表

15、指針TS3204X的IVTP存放器或者TS3205X的PST存放器。本例為TS3205X芯片,中斷向量定位于匯編語言模塊中,標(biāo)號IVES指向中斷向量表的基地址,下面說明如何獲取中斷向量地址。.defIVES.ref_int0,_int1,_int2.set“resetb_int0.set“vetrsIVES.spae2b_int1b_int2在鏈接器中,用鏈接器指定的標(biāo)號初始化鏈接器定義的變量。如下所示:ves.bjlrts50.lib_veTable=IVESERYPAGE0:VETRS:rigin=00000h,length=0003fhR:rigin=00040h,length=007FhP_RA:rigin=00800h,length=023FFh.SETINSresetVETRSvetrsP_RA.text:R.init:R.bss:RAB0_D.stak:INT_RA在程序中,將veTable聲明為外部的無符號指針:externunsignedint*veTable;將它裝載到PST存放器中。unsigned

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論