中斷在TMS320C54x系列DSP中的應用
發(fā)布時間:2008/8/21 0:00:00 訪問次數(shù):912
中斷是嵌入式芯片的靈魂,這是因為多數(shù)嵌入式系統(tǒng)對實時性都有很高的要求,即對出現(xiàn)事件的響應要極為迅速。中斷與軟件查詢方式相比有著更高的執(zhí)行效率。在ti公司的tms320c54x系列(以下簡稱c54x系列)dsp中,同樣也提供了很好的中斷機制。
1 c54x中的中斷機制
中斷信號實質(zhì)上是由硬件或者是軟件驅(qū)動的信號,它能使dsp暫停正在執(zhí)行的程序并進入中斷服務程序(isr)。在最典型的dsp系統(tǒng)中,如果a/d轉(zhuǎn)換器需要送數(shù)據(jù)到dsp中,或者d/a轉(zhuǎn)換器需要從dsp中取走數(shù)據(jù),都是通過硬件中斷向dsp發(fā)出請求的。
c54x系列dsp支持軟件中斷和硬件中斷。軟件中斷是由指令(intr、trap、reset)觸發(fā)的,硬件中斷是由外圍器件觸發(fā)的。硬件中斷實際上又分為兩類:一類是由dsp的片外外設(如a/d轉(zhuǎn)換器)觸發(fā)的,另外一類是由dsp的片內(nèi)外設(如定時器中斷)觸發(fā)的。硬件中斷又有優(yōu)先級的區(qū)分,這是為了處理同一時刻有多個硬件中斷源觸發(fā)中斷的情況。硬件中斷的種類和優(yōu)先級請參看具體使用的芯片資料。
如果按照可屏蔽情況分類,中斷又可分為可屏蔽中斷(c54x至多支持16個)和不可屏蔽中斷?善帘沃袛嗍躶t1寄存器中的intm位和imr寄存器中相應位的影響。當intm=0時,imr中某位為1,則開放相應的中斷。其實,在c54x中硬件中斷并不一定要由外圍器件觸發(fā),它同樣可以由指令intr、trap觸發(fā),并且不受intm的限制。有一點需要引起注意的是:指令reset復位和硬件rs復位對iptr和外圍電路初始化是不相同的。硬件復位時iptr總是被置為0x1ff,軟件復位時則不會修改當前iptr的值。c54x的中斷處理過程分為三個階段:
、僦袛嗾埱蟆?梢杂糜布骷蛘哕浖噶钫埱笾袛唷H绻埱蟮闹袛嗍强善帘沃袛,則ifr寄存器中相應的位被置為1,而不管中斷是否會被響應。
、谥袛囗憫。對于軟件中斷和不可屏蔽中斷,cpu是立即響應的。對于可屏蔽中斷,要滿足下列條件才能響應:
·優(yōu)先級最高(同時出現(xiàn)多個中斷時)
·intm位為0
·imr中相應位為1
cpu在取到軟件向量的第一個字后會產(chǎn)生iack信號,對可屏蔽中斷而言,iack會清除ifr中相應位。
、壑袛嗵幚。保護特定的寄存器,執(zhí)行中斷服務程序,完成后恢復寄存器。保護寄存器的原則是執(zhí)行中斷服務程序后能正確返回并恢復原來運行程序的環(huán)境。
dsp中提供的中斷是以中斷向量表(vect)的形式出現(xiàn)的(見表1)。中斷向量表的長度為128個字節(jié),每個中斷分配為4個字節(jié),一共有32個中斷,具體的中斷要看相應的芯片。c54x中斷向量表的地址是由pmst寄存器中的iptr構(gòu)成高9位地址形成的,所以向量表的地址必須是128的倍數(shù)。硬件復位時,iptr總是默認置為0x1ff,所以中斷向量表地址為0xff80。每個中斷向量的地址按如下構(gòu)成方法形成:pc=(iptr)<<7+(vector[n])<<2 (vector[n]為中斷向量號,在0~31之間),中斷向量號左移兩位是因為每個中斷向量占用4個字節(jié)的緣故。中斷向量表總是以匯編的形式出現(xiàn)的。
2 擴展地址模式下的中斷控制
早期的dsp共有192k的空間(程序、數(shù)據(jù)和i/o空間各為64k),隨著dsp處理能力越來越強,192k的空間已經(jīng)不能滿足需要。后來的c54x均提供了擴展地址模式,使程序空間擴展到8m。擴展模式下的中斷控制有自己特殊的地方,有必要進行說明。
擴展模式下程序空間的尋址是通過寄存器pc和xpc一同進行的。pc構(gòu)成低16位地址位,xpc構(gòu)成高7位地址位。所以保存和恢復xpc是用戶必須注意的。如果用戶使用的是far call指令,則xpc會自動保存和恢復。但在進行中斷處理的時候,只有16位的pc寄存器能夠自動得到保存(這是由于考慮了非擴展模式下中斷的效率問題),所以xpc必須由用戶自己來保存,否則在中斷返回的時候往往會跳到不同的頁面(由返回前后xpc值的不同引起)造成不可預測的后果。程序如表1所示。
由于必須在長跳轉(zhuǎn)之前保存xpc的值,沒法使用延遲指令(如fbd),所以中斷時延會增加兩個周期。
再來考慮另外一種情況:設程序運行在xpc=2的頁面上,如果這個時候有中斷發(fā)生并得到了cpu的響應,dsp會加載pc:pc=(iptr)<<7+(vector[n])<<2,xpc的值不發(fā)生變化,于是中斷向量的地址為:0x20000+0xpc。這就明顯地說明:中斷向量表必須和應用程序在同一64k的程序空間頁面內(nèi)。如果應用程序不是只分布在一個程序空間頁面內(nèi),那應該如何處理呢?可分三種類型共四種技巧來應對這樣的情況:(1.1)描述的是ovly為任意的情況;(2.1)~(2.2)描述的是ovly=1的情況;(3.1)描述的是ovly=0的情況。
(1.1)有的應用中,一些程序一旦運行是不允許中斷的。把不允許中斷的程序部分放到擴展空間內(nèi),而把中斷向量表和isr以及允許中斷的程序部分都放在xpc=0的頁面。當調(diào)用擴展空間的程序時關閉中斷使能,而當擴展空間程序返回到xpc=0的頁面時再開中斷。這樣做的好處是不用關注
中斷是嵌入式芯片的靈魂,這是因為多數(shù)嵌入式系統(tǒng)對實時性都有很高的要求,即對出現(xiàn)事件的響應要極為迅速。中斷與軟件查詢方式相比有著更高的執(zhí)行效率。在ti公司的tms320c54x系列(以下簡稱c54x系列)dsp中,同樣也提供了很好的中斷機制。
1 c54x中的中斷機制
中斷信號實質(zhì)上是由硬件或者是軟件驅(qū)動的信號,它能使dsp暫停正在執(zhí)行的程序并進入中斷服務程序(isr)。在最典型的dsp系統(tǒng)中,如果a/d轉(zhuǎn)換器需要送數(shù)據(jù)到dsp中,或者d/a轉(zhuǎn)換器需要從dsp中取走數(shù)據(jù),都是通過硬件中斷向dsp發(fā)出請求的。
c54x系列dsp支持軟件中斷和硬件中斷。軟件中斷是由指令(intr、trap、reset)觸發(fā)的,硬件中斷是由外圍器件觸發(fā)的。硬件中斷實際上又分為兩類:一類是由dsp的片外外設(如a/d轉(zhuǎn)換器)觸發(fā)的,另外一類是由dsp的片內(nèi)外設(如定時器中斷)觸發(fā)的。硬件中斷又有優(yōu)先級的區(qū)分,這是為了處理同一時刻有多個硬件中斷源觸發(fā)中斷的情況。硬件中斷的種類和優(yōu)先級請參看具體使用的芯片資料。
如果按照可屏蔽情況分類,中斷又可分為可屏蔽中斷(c54x至多支持16個)和不可屏蔽中斷?善帘沃袛嗍躶t1寄存器中的intm位和imr寄存器中相應位的影響。當intm=0時,imr中某位為1,則開放相應的中斷。其實,在c54x中硬件中斷并不一定要由外圍器件觸發(fā),它同樣可以由指令intr、trap觸發(fā),并且不受intm的限制。有一點需要引起注意的是:指令reset復位和硬件rs復位對iptr和外圍電路初始化是不相同的。硬件復位時iptr總是被置為0x1ff,軟件復位時則不會修改當前iptr的值。c54x的中斷處理過程分為三個階段:
①中斷請求?梢杂糜布骷蛘哕浖噶钫埱笾袛。如果請求的中斷是可屏蔽中斷,則ifr寄存器中相應的位被置為1,而不管中斷是否會被響應。
、谥袛囗憫。對于軟件中斷和不可屏蔽中斷,cpu是立即響應的。對于可屏蔽中斷,要滿足下列條件才能響應:
·優(yōu)先級最高(同時出現(xiàn)多個中斷時)
·intm位為0
·imr中相應位為1
cpu在取到軟件向量的第一個字后會產(chǎn)生iack信號,對可屏蔽中斷而言,iack會清除ifr中相應位。
③中斷處理。保護特定的寄存器,執(zhí)行中斷服務程序,完成后恢復寄存器。保護寄存器的原則是執(zhí)行中斷服務程序后能正確返回并恢復原來運行程序的環(huán)境。
dsp中提供的中斷是以中斷向量表(vect)的形式出現(xiàn)的(見表1)。中斷向量表的長度為128個字節(jié),每個中斷分配為4個字節(jié),一共有32個中斷,具體的中斷要看相應的芯片。c54x中斷向量表的地址是由pmst寄存器中的iptr構(gòu)成高9位地址形成的,所以向量表的地址必須是128的倍數(shù)。硬件復位時,iptr總是默認置為0x1ff,所以中斷向量表地址為0xff80。每個中斷向量的地址按如下構(gòu)成方法形成:pc=(iptr)<<7+(vector[n])<<2 (vector[n]為中斷向量號,在0~31之間),中斷向量號左移兩位是因為每個中斷向量占用4個字節(jié)的緣故。中斷向量表總是以匯編的形式出現(xiàn)的。
2 擴展地址模式下的中斷控制
早期的dsp共有192k的空間(程序、數(shù)據(jù)和i/o空間各為64k),隨著dsp處理能力越來越強,192k的空間已經(jīng)不能滿足需要。后來的c54x均提供了擴展地址模式,使程序空間擴展到8m。擴展模式下的中斷控制有自己特殊的地方,有必要進行說明。
擴展模式下程序空間的尋址是通過寄存器pc和xpc一同進行的。pc構(gòu)成低16位地址位,xpc構(gòu)成高7位地址位。所以保存和恢復xpc是用戶必須注意的。如果用戶使用的是far call指令,則xpc會自動保存和恢復。但在進行中斷處理的時候,只有16位的pc寄存器能夠自動得到保存(這是由于考慮了非擴展模式下中斷的效率問題),所以xpc必須由用戶自己來保存,否則在中斷返回的時候往往會跳到不同的頁面(由返回前后xpc值的不同引起)造成不可預測的后果。程序如表1所示。
由于必須在長跳轉(zhuǎn)之前保存xpc的值,沒法使用延遲指令(如fbd),所以中斷時延會增加兩個周期。
再來考慮另外一種情況:設程序運行在xpc=2的頁面上,如果這個時候有中斷發(fā)生并得到了cpu的響應,dsp會加載pc:pc=(iptr)<<7+(vector[n])<<2,xpc的值不發(fā)生變化,于是中斷向量的地址為:0x20000+0xpc。這就明顯地說明:中斷向量表必須和應用程序在同一64k的程序空間頁面內(nèi)。如果應用程序不是只分布在一個程序空間頁面內(nèi),那應該如何處理呢?可分三種類型共四種技巧來應對這樣的情況:(1.1)描述的是ovly為任意的情況;(2.1)~(2.2)描述的是ovly=1的情況;(3.1)描述的是ovly=0的情況。
(1.1)有的應用中,一些程序一旦運行是不允許中斷的。把不允許中斷的程序部分放到擴展空間內(nèi),而把中斷向量表和isr以及允許中斷的程序部分都放在xpc=0的頁面。當調(diào)用擴展空間的程序時關閉中斷使能,而當擴展空間程序返回到xpc=0的頁面時再開中斷。這樣做的好處是不用關注
熱門點擊
- 中斷在TMS320C54x系列DSP中的應用
- 調(diào)度器在DSP編程中的應用
- TI推出可編程PLL時鐘合成器
- matlab濾波器設計-IIR濾波器的設計與
- 智安邦攜TI推出SMTK02智能視頻服務器產(chǎn)
- C代碼在TMS320C54X上的手工匯編優(yōu)化
- TI推出成功突破低功耗挑戰(zhàn)的 DSP 與應用
- 雙TSC695F處理器在微小衛(wèi)星電子平臺中的
- 16位高速A/D轉(zhuǎn)換器在高速DSP中的應用
- 晶門科技推出MagusCore SSD193
推薦技術(shù)資料
- 業(yè)余條件下PCM2702
- PGM2702采用SSOP28封裝,引腳小而密,EP3... [詳細]