欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
基于C語(yǔ)言設置TMS320 DSP中斷向量表

摘要:  隨著(zhù)DSP芯片應用的不斷深入,用C語(yǔ)言開(kāi)發(fā)DSP芯片,不僅可以使DSP芯片的開(kāi)發(fā)速度大大提高,也使得程序的修改和移植變得十分方便。C語(yǔ)言設置TMS320系列DSP中斷向量表是高級語(yǔ)言開(kāi)發(fā)DSP的一個(gè)具體應用。

關(guān)鍵詞: C語(yǔ)言,中斷,中斷向量表,DSP。


Setting TMS320 DSP Interrupt Vectors Table in C
Abstract  Along with the development of DSP chip, the exploiture of DSP in C not only accelerate the evolution of DSP ,but also make the program easy to modify and transplant. This is a practice application that setting TMS320 DSP interrupt vectors table in C.

Key Words  C language, Interrupts, Interrupt vector table, DSP.

1、      引言
DSP(數字信號處理器)自二十世紀70年代末80年代初誕生以來(lái),得到了突飛猛進(jìn)的發(fā)展,在信號處理、通訊、雷達等方面應用越來(lái)越廣泛,而且開(kāi)發(fā)手段和開(kāi)發(fā)設備也越來(lái)越多樣化。其中C語(yǔ)言在DSP開(kāi)發(fā)應用中起著(zhù)越來(lái)越重要的作用,以C語(yǔ)言編寫(xiě)的DSP應用程序具有可讀性、可移植性,易于維護和修改。另外在DSP應用系統中,中斷是完成數據傳遞、實(shí)時(shí)處理等的重要手段,因而用C語(yǔ)言完成對DSP中斷設置是DSP開(kāi)發(fā)的重要內容。
    DSP中斷的設置主要包括中斷服務(wù)程序的編寫(xiě),中斷向量表的設置,中斷寄存器的初始化等內容。本文以TI公司TMS320系列DSP為例,說(shuō)明用C語(yǔ)言設置中斷向量表的方法。并給出實(shí)例進(jìn)行說(shuō)明。
2、      中斷向量表的定位
中斷服務(wù)程序的地址(中斷向量)要裝載到存儲器的合適區域。一般這些向量都定位在0x0開(kāi)始的程序存儲器中。但有些處理器要求或者可以在其他的存儲區域安裝中斷向量。
對于微處理器模式下的TMS320C25、TMS320C26、TMS320C28、TMS320C30、TMS320C31,中斷向量定位于0x0開(kāi)始的地址。對于微計算機/程序引導模式下的TMS320C31的中斷向量定位于0x809fc1,TMS320C26的中斷向量定位于0xffa0。TMS320C5X復位向量定位在0x0,其他中斷向量可以定位于任何2K字的程序存儲器中,中斷向量表的定位是與PMST寄存器的IPTR位有關(guān),有效的中斷向量表的基地址是0x0,0x800,0x1000,0x1800,0x2000,…0xf800。
TMS320C4X的復位向量定位在四個(gè)地址之一,這四個(gè)地址由外部引腳RESETLOC0和RESETLOC1決定。TMS320C4X的中斷向量可存在于任何512字范圍的存儲器中,中斷向量表的地址由中斷向量表指針(IVTP)寄存器決定。另外,TMS320C4X的自陷(trap)中斷向量可存放在512字范圍的存儲器中,自陷向量表的地址由自陷向量表指針(TVTP)寄存器決定。有效的中斷或者自陷向量表的基地址是0x0,0x200,0x400,0x800,0xa00,0xc00,0xe00,0x1000,0x1200…0xfffffe00,如表1所示。
有兩種方法可以初始化中斷向量表,下面講解這兩種方法:
方法一:利用已命名的ASM段
生成向量表的最直接方法就是用匯編指令.sect來(lái)生成一個(gè)表。這個(gè)表包含中斷向量的地址和跳轉指令。
表1
處理器      向量表基地址      說(shuō)明
TMS320C2X      0x0      不包括微計算機/程序引導模式下的TMS320C26
TMS320C26      0xffa0      微計算機/程序引導模式
TMS320C30      0x0     
TMS320C31      0x0      微處理器模式
TMS320C31      0x809fc1      微計算機/程序引導模式

TMS320C4X      復位      0x0,0x7fffffff,0x80000000,0xfffffff      外部引腳RESETLOC0和RESETLOC1決定
     中斷向量      任意512字范圍      IVTP寄存器決定
     自陷向量      任意512字范圍      TVTP寄存器決定
TMS320C5X      復位      0x0     
     中斷向量      任意2K字數據頁(yè)      PMST寄存器的IPTR位決定
在微計算機/程序引導模式下TMS320C2X、TMS320C5X和TMS320C31 從中斷向量的位置處執行代碼,因而要用跳轉指令來(lái)代替中斷向量,如TMS320C31用24位指令BR來(lái)實(shí)現:
INT1:   BR   _c_int01
在微處理器模式下TMS320C30、TMS320C31和TMS320C4X,中斷向量是下一條存取指令的地址,因而中斷服務(wù)程序的地址用匯編指令.word存儲在中斷向量處。例如,TMS320C4X中斷1 可用匯編語(yǔ)言定義如下:
INT1:  .word   _c_int01
     因為中斷服務(wù)的標識符在匯編語(yǔ)言模塊外部被聲明,所以標識符必須用.ref或.global來(lái)聲明。下面的例子是一個(gè)匯編語(yǔ)言模塊(vecs.asm)定義了一個(gè)包含TMS320C5X跳轉指令的段。
.ref    _c_int0,  _c_int1      ;在外部定義中斷向量
.sect  “vectors”             ;聲明一個(gè)一命名的段
RS: b         _c_int0        ;轉至復位向量    
I1: b         _c_int1        ;轉至中斷向量1

      處理保留和未使用的區域
有時(shí)中斷向量表中包含保留的地址,例如微計算機/程序引導模式下的TMS320C26或者TMS320C4X和TMS320C5X的復位和中斷向量不連續的情形。TMS320C31也會(huì )發(fā)生這種情形,系統中并不是所有的中斷都能被用到。為了處理向量映象中的保留地址,就要使用匯編指令.space。注意對于定點(diǎn)設備.space保留的是位,對于浮點(diǎn)設備.space保留的字。例如,微計算機/程序引導模式下TMS320C26,假設所有中斷都是可用的
.sect   “vectors”  ;為復位和中斷向量定義已命名的段
.space  2*16        ;保留的空間
b      _c_int1       ;INT0
b      _c_int2       ;INT1
b      _c_int3       ;INT2
b      _c_int4       ;TINT
b      _c_int5       ;RINT
b      _c_int6       ;XINT
b      _c_int7       ;TRAP
注意.space指令為復位向量保留的位置在程序引導方式下不能使用,因為復位會(huì )啟動(dòng)程序引導功能。使用.space時(shí)vectors段鏈接到0xfa00,不使用.space指令該段鏈接到0xfa02。
但是,如果定時(shí)器和自陷中斷向量被使用時(shí),可用.space指令對向量表進(jìn)行如下的定義:
.sect   “vectors”    ;為復位和中斷向量定義已命名的段
.space   2*4*16      ;保留的和3個(gè)未使用的向量
b      _c_int4        ;TINT
.space   2*2*16      ;2個(gè)未使用的向量
b       _c_int7        ;TRAP
注意在中斷和自陷向量表中未使用的部分可用來(lái)存儲數據。但為了保證中斷處理的正確,一定要確保中斷和自陷向量不被破壞。
      鏈接到存儲器映象
已命名段產(chǎn)生后,TMS320鏈接器就會(huì )把向量表鏈接到存儲器的合適位置,共分三步進(jìn)行:
1.      鏈接匯編語(yǔ)言模塊;
2.      根據中斷向量表的定位定義鏈接器的MEMORY段;
3.      在鏈接器的SECTIONS命令中,定位這些已命名的段。
下面是TMS320C5X的命令文件,將vectors定位到040h。
-c
vecs.obj
main.obj
-l rts50.lib
MENORY
{
PAGE0:VECTORS:origin = 0000h, length = 003fh
         ROM :origin = 0040h, length = 007cfh
}
SECTIONS
{
“vectors” :{} > VECTORS
.text     :{} > ROM
.
}
方法二:安裝一個(gè)運行時(shí)的向量
這種方法在開(kāi)發(fā)和調試時(shí)很有用的,這種方法是用C語(yǔ)句在裝載中斷服務(wù)程序地址時(shí)建立一個(gè)運行時(shí)的向量。該方法適用于微處理器模式下的TMS320C30和TMS320C31,以及TMS320C4X,因為它們只用地址,而不用跳轉指令作為中斷向量。其重點(diǎn)就是將中斷服務(wù)程序的地址放到合適的存儲器空間,例如,TMS320C30地址0x1對應于外部中斷0(INT0),在該地址安裝中斷服務(wù)程序c_int01。使用如下語(yǔ)句“
*((void (**) () )0x1) = c_int01;
這里,0x1被轉換成指向函數的指針,因為它包含函數c_int01的地址。




3、      向量表指針
TMS320C4X和TMS320C5X都可以不將中斷向量表放在0x0開(kāi)始的位置。這兩個(gè)系列的DSP都是由寄存器來(lái)確定中斷向量的位置。TMS320C4X的復位向量地址是由處理器的引腳確定的四個(gè)地址中的一個(gè)。中斷能夠被正確的處理,首先必須在接收到中斷之前對中斷向量表進(jìn)行初始化。下面幾個(gè)例子是用來(lái)說(shuō)明初始化與中斷有關(guān)的寄存器的方法。
例1:在C中嵌入匯編語(yǔ)句
這個(gè)例子,利用在C語(yǔ)言中嵌入匯編語(yǔ)句來(lái)設置TMS320C4X的中斷向量,其起始地址為0x0,方法是通過(guò)將IVTP寄存器的值設置為0x0。
asm(“      PUSH      R0”);
asm(“      LDI      0h, R0”);
asm(“      LDPE   R0, IVTP”);
asm(“      POP            R0”);
例2:利用TMS320C4X的PRTS
這個(gè)例子,利用TMS320C4X的并行運行[來(lái)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
TI C64X DSP中斷向量表的配置(硬件中斷) zz
TMS320C54x系列DSP的中斷機制
獻給初學(xué)者-DSP入門(mén)教程 helloDSP論壇
DSP工程師的經(jīng)驗分享
如何用C語(yǔ)言開(kāi)發(fā)DSP嵌入式系統?
tms320f2812(cc)求助,燒的程序無(wú)法運行? - DSP 技術(shù) - 21IC電子...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久