《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 中斷在TMS320C54x系列DSP中的應用

中斷在TMS320C54x系列DSP中的應用

2008-09-27
作者:朱繼紅 于東海 鄒采榮

??? 摘? 要: 詳細分析了TMS320C54x系列DSP的中斷機制,以及在擴展地址模式下中斷控制所具有的一些特點,并給出了DSP/BIOS" title="DSP/BIOS">DSP/BIOS下中斷的管理。?

??? 關鍵詞: 中斷 中斷向量表" title="向量表">向量表? TMS320C54x? DSP/BIOS? DSP

?

??? 中斷是嵌入式芯片的靈魂,這是因為多數嵌入式系統對實時性都有很高的要求,即對出現事件的響應要極為迅速。中斷與軟件查詢方式相比有著更高的執行效率。在TI公司的TMS320C54x系列(以下簡稱C54x系列)DSP中,同樣也提供了很好的中斷機制。?

1 C54x中的中斷機制?

??? 中斷信號實質上是由硬件或者是軟件驅動的信號,它能使DSP暫停正在執行的程序并進入中斷服務程序(ISR)。在最典型的DSP系統中,如果A/D轉換器需要送數據到DSP中,或者D/A轉換器需要從DSP中取走數據,都是通過硬件中斷向DSP發出請求的。?

??? C54x系列DSP支持軟件中斷和硬件中斷。軟件中斷是由指令(INTR、TRAP、RESET)觸發的,硬件中斷是由外圍器件觸發的。硬件中斷實際上又分為兩類:一類是由DSP的片外外設(如A/D轉換器)觸發的,另外一類是由DSP的片內外設(如定時器中斷)觸發的。硬件中斷又有優先級的區分,這是為了處理同一時刻有多個硬件中斷源觸發中斷的情況。硬件中斷的種類和優先級請參看具體使用的芯片資料。?

??? 如果按照可屏蔽情況分類,中斷又可分為可屏蔽中斷(C54x至多支持16個)和不可屏蔽中斷。可屏蔽中斷受ST1寄存器中的INTM位和IMR寄存器中相應位的影響。當INTM=0時,IMR中某位為1,則開放相應的中斷。其實,在C54x中硬件中斷并不一定要由外圍器件觸發,它同樣可以由指令INTR、TRAP觸發,并且不受INTM的限制。有一點需要引起注意的是:指令RESET復位和硬件RS復位對IPTR和外圍電路初始化是不相同的。硬件復位時IPTR總是被置為0x1FF,軟件復位時則不會修改當前IPTR的值。C54x的中斷處理" title="中斷處理">中斷處理過程分為三個階段:?

??? ①中斷請求。可以用硬件器件或者軟件指令請求中斷。如果請求的中斷是可屏蔽中斷,則IFR寄存器中相應的位被置為1,而不管中斷是否會被響應。?

??? ②中斷響應。對于軟件中斷和不可屏蔽中斷,CPU是立即響應的。對于可屏蔽中斷,要滿足下列條件才能響應:?

??? ·優先級最高(同時出現多個中斷時)?

??? ·INTM位為0?

??? ·IMR中相應位為1?

???? CPU在取到軟件向量的第一個字后會產生IACK信號,對可屏蔽中斷而言,IACK會清除IFR中相應位。?

??? ③中斷處理。保護特定的寄存器,執行中斷服務程序,完成后恢復寄存器。保護寄存器的原則是執行中斷服務程序后能正確返回并恢復原來運行程序的環境。?

??? DSP中提供的中斷是以中斷向量表(VECT)的形式出現的(見表1)。中斷向量表的長度為128個字節,每個中斷分配為4個字節,一共有32個中斷,具體的中斷要看相應的芯片。C54x中斷向量表的地址是由PMST寄存器中的IPTR構成高9位地址形成的,所以向量表的地址必須是128的倍數。硬件復位時,IPTR總是默認置為0x1FF,所以中斷向量表地址為0xFF80。每個中斷向量的地址按如下構成方法形成:PC=(IPTR)<<7+(Vector[n])<<2 (Vector[n]為中斷向量號,在0~31之間),中斷向量號左移兩位是因為每個中斷向量占用4個字節的緣故。中斷向量表總是以匯編的形式出現的。?

?

?

2 擴展地址模式下的中斷控制?

??? 早期的DSP共有192K的空間(程序、數據和I/O空間各為64K),隨著DSP處理能力越來越強,192K的空間已經不能滿足需要。后來的C54x均提供了擴展地址模式,使程序空間擴展到8M。擴展模式下的中斷控制有自己特殊的地方,有必要進行說明。?

??? 擴展模式下程序空間的尋址是通過寄存器PC和XPC一同進行的。PC構成低16位地址位,XPC構成高7位地址位。所以保存和恢復XPC是用戶必須注意的。如果用戶使用的是Far Call指令,則XPC會自動保存和恢復。但在進行中斷處理的時候,只有16位的PC寄存器能夠自動得到保存(這是由于考慮了非擴展模式下中斷的效率問題),所以XPC必須由用戶自己來保存,否則在中斷返回的時候往往會跳到不同的頁面(由返回前后XPC值的不同引起)造成不可預測的后果。程序如表1所示。?

??? 由于必須在長跳轉之前保存XPC的值,沒法使用延遲指令(如FBD),所以中斷時延會增加兩個周期。?

??? 再來考慮另外一種情況:設程序運行在XPC=2的頁面上,如果這個時候有中斷發生并得到了CPU的響應,DSP會加載PC:PC=(IPTR)<<7+(Vector[n])<<2,XPC的值不發生變化,于是中斷向量的地址為:0x20000+0xPC。這就明顯地說明:中斷向量表必須和應用程序在同一64K的程序空間頁面內。如果應用程序不是只分布在一個程序空間頁面內,那應該如何處理呢?可分三種類型共四種技巧來應對這樣的情況:(1.1)描述的是OVLY為任意的情況;(2.1)~(2.2)描述的是OVLY=1的情況;(3.1)描述的是OVLY=0的情況。?

??? (1.1)有的應用中,一些程序一旦運行是不允許中斷的。把不允許中斷的程序部分放到擴展空間內,而把中斷向量表和ISR以及允許中斷的程序部分都放在XPC=0的頁面。當調用擴展空間的程序時關閉中斷使能,而當擴展空間程序返回到XPC=0的頁面時再開中斷。這樣做的好處是不用關注XPC的值對中斷向量尋址的影響。中斷的時候也不需要保存XPC的值。調用過程如圖1所示,Y表示需要關注XPC的值,N表示不需要關注XPC的值,數字表示調用順序。?

?

?

??? (2.1) DSP中影響存儲器映射的因素有三個:OVLY、DROM和MP/MC。OVLY是Overlay的簡寫。當OVLY=1時,數據空間里的一部分RAM變為重疊區域(Overlay Memory)。這部分重疊區域同時映射在每一頁程序空間的上部。具體示例如圖2所示(MP/MC=0,C5416)。?

?

?

??? 可見OVLY=1的時候,數據空間的DARAM0~3被映射到程序空間的每一頁上?;谶@樣的特點,可以把中斷向量表定位到數據空間的重疊區域DARAM0~3中,置OVLY為1。當有中斷發生時,不管程序運行于DSP的哪個程序頁面空間,只用PC尋址都能夠正確地取到中斷向量表,而不會受XPC的影響。中斷程序ISR可以放到任何一個程序頁面中,但這時跳轉到ISR的指令只能用長跳轉指令(FB等),跳轉之前注意將XPC壓入堆棧,程序同表1。示意圖如圖3所示。?

?

?

??? (2.2) 如果片內RAM比較大,分給數據空間的RAM也比較多(如C5416有64K的RAM可以作為數據空間),數據空間可能會有余量。這時可以把中斷向量表和ISR都全部放進數據空間的Overlay Memory區域,并把OVLY置1。這樣不僅在任何程序頁面空間都能夠正確地取到中斷向量表,同時用短跳轉指令(BD等)就可以實現跳轉到ISR,不再需要對XPC進行保存和還原。程序請參看表2。?

?

?

??? (3.1) 在擴展模式下,雖然程序空間擴為8M,但如果OVLY=1,則程序空間中存在大量的重疊區域,如C5416在OVLY=1的情況下真正可用的程序空間最大為4.03M。有的場合需要的程序空間大于4.03M,就必須使用OVLY=0的情況。這個時候程序空間不存在重疊區域,但可以模擬出來。方法是:把中斷向量表拷貝到會發生中斷的每一頁程序空間,如圖4所示。這樣,中斷的時候就能正確找到中斷向量表而實現中斷跳轉。?

?

?

??? 比較上面的四種方法,方法(2.1)更為適應普遍的情況。它不限制ISR的地址范圍,而中斷向量表只占0x80的空間,把它放到數據空間的重疊區域是很容易做到的。筆者正在做的項目正是采用了這種方法。?

3 DSP/BIOS下中斷的管理?

??? DSP/BIOS是TI近來推出的準實時操作系統,它同樣支持擴展地址模式,只是需要將Global Settings中的函數調用模式設置為Far就可以了。需要強調的是:BIOS只支持OVLY=1的擴展模式,而不支持OVLY=0的擴展模式。擴展模式下在BIOS Code中會多出一個段“.bios:.norptb”,這個段會被自動放入Overlay Memory之中,具體原因請參看參考文獻[4]。BIOS管理的線程有四種類型:HWI、SWI、TSK以及IDL。上面所提到的所有中斷屬于優先級最高的HWI線程。每個中斷向量都是以HWI模塊的Object形式存在,可以用BIOS下的Configuration Tool來配置每個中斷向量所觸發的函數。在Configuration Tool中,會發現System的MEM模塊下有一個名為VECT的Object,它實質上是用來給中斷向量表分配存儲空間的,用戶可以自己配置中斷向量表的地址(必須是128的倍數)。地址的分配方法可以參考上面提到的幾種應對技巧。下面就BIOS下的中斷做出幾點說明:?

??? ·在Object的屬性框中填寫中斷函數" title="中斷函數">中斷函數名時,如果中斷函數是由C語言編寫的,則需要在函數名前加下劃線(C語言和匯編語言" title="匯編語言">匯編語言相互調用的需要)。匯編語言則不需要。?

??? ·在編寫中斷函數的時候不能再用關鍵字interrupt來說明中斷函數,因為BIOS已經自動包括了這個功能。如果再用interrupt,則會造成致命后果。?

??? ·如果中斷函數是用匯編語言編寫的,中斷函數應夾在BIOS的API HWI_enter和HWI_exit之間。這樣,在中斷處理的時候會正確保存和恢復一些需要使用的寄存器,并妥善處理線程間的關系以及中斷函數中對BIOS API的調用;如果中斷函數是用C語言編寫的,則必須使用HWI Dispatcher屬性,作用和前面是一樣的。如果想了解更多東西可以參看參考文獻[5]。?

??? ·在BIOS中的SWI(軟件中斷)模塊下,用戶可以自己添加軟件中斷對象。但是必須從概念上分清楚,這里添加的軟件中斷和在前面提到的軟件中斷(即由INTR、TRAP、RESET觸發的中斷)是完全不同的概念。這里的軟件中斷并不屬于中斷向量表里的中斷向量(顯然中斷的個數也不會存在限制),并且它可以帶兩個參數(前面的中斷函數是不能帶參數的)。所以從幾個方面看這里的軟件中斷函數更象是通常意義上的一般函數。?

??? 在剛開始使用DSP/BIOS的時候可能會覺得比較麻煩,需要理解的東西也很多。但當你熟悉了以后會發現,它能幫你節省不少時間去處理底層的東西,而使你將更多的精力放在算法的實現上。?

??? 本文全面介紹了C54x系列DSP的中斷機制,以及中斷在使用過程中的一些技巧,闡述了整個中斷的響應過程和一些比較容易出錯的地方。希望通過共享使大家更快更好地掌握C54x的中斷處理。?

參考文獻?

1 TMS320C54x DSP Reference Set Volume 1:CPU and?Peripherals. Texas Instruments,2001.3?

2 Interrupt Handing Using Extended Addressing of the?TMS320C54x Family. Texas Instruments, 1999.7?

3 TMS320 DSP/BIOS User’s Guide. Texas Instruments,2002.11?

4 DSP/BIOS and TMS320C54x Extended Addressing. Texas?Instruments, 2000.11?

5 TMS320C5000 DSP/BIOS Application Programming Interface Reference Guide. Texas Instruments, 2002.10

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲看片网站| 欧美成人精品激情在线观看| 亚洲午夜av在线| 国产精品网站一区| 一本在线高清不卡dvd| 欧美亚洲在线观看| 欧美va亚洲va日韩∨a综合色| 欧美日韩视频在线第一区| 国产精品麻豆欧美日韩ww| 午夜欧美电影在线观看| 一区二区自拍| 欧美成人首页| 久久中文在线| 欧美一区影院| 午夜久久久久久久久久一区二区| 另类专区欧美制服同性| 欧美久久影院| 亚洲福利国产| 亚洲激情一区二区三区| 亚洲大胆美女视频| 欧美视频一区| 在线成人激情黄色| 国产精品99一区| 国产欧美日韩综合精品二区| 亚洲欧美国产另类| 欧美日韩在线大尺度| 亚洲一区精品在线| 久久久噜噜噜久噜久久| 亚洲高清免费在线| 亚洲一区三区在线观看| 在线亚洲伦理| 久久精品91久久香蕉加勒比| 在线日韩成人| 国产精品影视天天线| 国产欧美在线看| 久久国产夜色精品鲁鲁99| 国产精品99久久久久久久久久久久| 亚洲人成网站999久久久综合| 亚洲成色777777女色窝| 久久久久国产一区二区| 在线欧美一区| 欧美成人午夜免费视在线看片| 欧美精品免费看| 国产精品九色蝌蚪自拍| 亚洲国产婷婷香蕉久久久久久| 久久综合亚州| 久久国产加勒比精品无码| 亚洲黄色一区| 在线一区视频| 亚洲黄色在线视频| 国产亚洲欧美日韩精品| 欧美在线免费| 日韩视频在线一区二区三区| 欧美日韩欧美一区二区| 日韩视频精品在线| 99精品国产福利在线观看免费| 亚洲综合日韩| 欧美日韩一区二区欧美激情| 亚洲四色影视在线观看| 欧美精品日韩一本| 欧美理论电影在线播放| 欧美a级片一区| 久久综合久色欧美综合狠狠| 一本色道**综合亚洲精品蜜桃冫| 久久综合久久久| 久久综合久久综合这里只有精品| 国产精品久久国产精品99gif| 亚洲一区二区免费视频| 亚洲视频久久| 亚洲日本欧美天堂| 亚洲欧美日韩国产综合| 亚洲国产欧美另类丝袜| 国产真实久久| 欧美精品二区三区四区免费看视频| 午夜宅男久久久| 欧美日韩xxxxx| 最近看过的日韩成人| 亚洲欧美偷拍卡通变态| 国产精品夜色7777狼人| 亚洲一级黄色| 国产精品男gay被猛男狂揉视频| 黄色精品一二区| 精品1区2区| 夜夜爽夜夜爽精品视频| 99国产欧美久久久精品| 国产日韩欧美在线| 欧美体内谢she精2性欧美| 欧美精品国产| 久久综合久久88| 亚洲精品视频在线观看网站| 久久黄色级2电影| 国产日韩视频| 国产亚洲成人一区| 国产精品久久亚洲7777| 亚洲视频精选在线| 久久亚洲春色中文字幕久久久| 国产精品久久久久久av下载红粉| 国产精品久久久久9999高清| 欧美日本成人| 午夜亚洲伦理| 国产一区二区高清视频| 亚洲国产另类久久久精品极度| 在线欧美不卡| 国产欧美日韩三级| 国产日韩欧美视频在线| 国产亚洲精品aa午夜观看| 国产精品最新自拍| 亚洲精品美女91| 国产伦精品免费视频| 久久影视精品| 亚洲国产成人精品视频| 一本色道**综合亚洲精品蜜桃冫| 西西裸体人体做爰大胆久久久| 国产欧美日韩中文字幕在线| 欧美亚洲视频在线观看| 国产精品久久久久99| 国产精品美女视频网站| 欧美福利精品| 国产欧美日韩不卡| 韩日在线一区| 在线日韩av永久免费观看| 久久久久久久一区二区| 欧美在线视频a| 这里只有精品视频在线| 中日韩视频在线观看| 欧美主播一区二区三区| 性欧美暴力猛交另类hd| 欧美激情小视频| 欧美日韩亚洲一区三区| 欧美日本国产精品| 欧美国产日韩xxxxx| 亚洲午夜在线视频| 亚洲一区二区三区三| 欧美一级视频免费在线观看| 亚洲永久精品国产| 午夜精品视频在线观看| 久久精品91久久香蕉加勒比| 亚洲午夜精品视频| 亚洲精品久久久久久久久久久久久| 亚洲免费视频在线观看| 亚洲高清不卡一区| 在线电影国产精品| 亚洲国产专区校园欧美| 永久久久久久| 久久激情婷婷| 国产亚洲激情视频在线| 亚洲欧美日韩国产成人精品影院| 国产精品丝袜91| 亚洲一区二区三区成人在线视频精品| 蜜桃伊人久久| 国产一区观看| 久久艳片www.17c.com| 一本色道久久综合亚洲精品小说| 久久久久久久久久码影片| 欧美午夜精品一区二区三区| 欧美v国产在线一区二区三区| 亚洲第一中文字幕| 国产精品第三页| 国产精品一区二区三区免费观看| 亚洲国产小视频| 国产精品一区二区久久精品| 91久久香蕉国产日韩欧美9色| 国语精品一区| 亚洲国产婷婷| 欧美日韩另类丝袜其他| 亚洲视频在线一区| 欧美一激情一区二区三区| 欧美激情亚洲自拍| 久久久久国色av免费观看性色| 欧美精品日韩精品| 99这里有精品| 精品999成人| 国产精品播放| 欧美人牲a欧美精品| 亚洲一区二区三区精品在线| 亚洲成色777777在线观看影院| 亚洲男人第一av网站| 久久综合伊人77777蜜臀| 亚洲影视在线播放| 久久伊人精品天天| 亚洲综合电影一区二区三区| 欧美在线精品免播放器视频| 日韩视频在线你懂得| 一本一本久久a久久精品牛牛影视| 亚洲一区二区三区免费观看| 欧美日韩精品免费观看| 亚洲精品一区二区在线观看| 久久人人97超碰精品888| 日韩一二三在线视频播| 在线成人免费视频| 伊人精品在线| 欧美一级日韩一级| 狠狠88综合久久久久综合网| 国产精品www网站| 国产欧美精品国产国产专区| 国产一区二区三区黄| 亚洲一区二区三区精品动漫| 久久精品论坛| 欧美日本韩国一区| 久久久噜久噜久久综合| 国内精品**久久毛片app| 久久久99爱| 免费中文字幕日韩欧美| 亚洲国产va精品久久久不卡综合| 欧美日韩国产亚洲一区| 亚洲手机视频| 久久在线视频在线| 午夜欧美理论片| 最新日韩在线视频| 久久字幕精品一区| 一区二区三区日韩| 一区精品在线| 欧美精品一区二区三区久久久竹菊| 国产精品夜夜夜一区二区三区尤| 亚洲国产精品专区久久| 西西裸体人体做爰大胆久久久| 亚洲精品免费在线播放| 欧美v亚洲v综合ⅴ国产v| 欧美午夜激情小视频| 亚洲女人小视频在线观看| 免费亚洲电影在线观看| 国产精品自拍一区| 又紧又大又爽精品一区二区| 亚洲小说欧美另类社区| 韩国成人精品a∨在线观看| 99国产精品久久久久久久久久| 欧美日韩成人精品| 久久综合伊人77777蜜臀| 欧美高清在线精品一区| 这里是久久伊人| 亚洲国产高清一区| 一本色道久久综合亚洲二区三区| 美女尤物久久精品| 一本色道**综合亚洲精品蜜桃冫| 国产精品丝袜白浆摸在线| 国产亚洲精品久久久久婷婷瑜伽| 香蕉亚洲视频| 国产小视频国产精品| 一区二区三区国产盗摄| 亚洲国产一区二区三区在线播| 欧美日韩国产亚洲一区| 亚洲午夜高清视频| 久久久亚洲影院你懂的| 亚洲精品国产拍免费91在线| 欧美激情国产日韩| 久久国产精品久久w女人spa| 羞羞视频在线观看欧美| 欧美一级片久久久久久久| 日韩午夜精品| 亚洲午夜精品视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美专区在线观看| 亚洲自拍偷拍视频| 欧美激情精品久久久久久久变态| 欧美精品一区二区精品网| 99亚洲精品| 国产美女精品| 欧美大香线蕉线伊人久久国产精品| 欧美大片专区| 亚洲一区免费观看| 午夜精品久久久99热福利| 老鸭窝毛片一区二区三区| 麻豆九一精品爱看视频在线观看免费| 欧美日韩亚洲激情| 免费成人小视频| 欧美一级成年大片在线观看| 久久aⅴ国产紧身牛仔裤| 亚洲精品国产精品国自产在线| 欧美一区二区三区在线播放| 亚洲精选一区二区| 亚洲欧美日韩一区| 亚洲欧美成aⅴ人在线观看| 国产精品久久久久久久9999| 狂野欧美激情性xxxx欧美| 一区二区三区在线观看国产| 亚洲激情精品| 欧美日韩国产首页在线观看| 99视频+国产日韩欧美| 美女精品视频一区| 欧美美女bb生活片| 亚洲网在线观看| 欧美一区二区视频免费观看| 在线看成人片| 国产欧美日本一区视频| 日韩视频在线一区二区三区| 欧美日韩在线三级| 蜜臀久久久99精品久久久久久| 欧美日韩国产成人在线| 91久久精品日日躁夜夜躁国产| 国产美女一区二区| 国产精品久久久99| 一区二区三区蜜桃网| 夜夜嗨av一区二区三区中文字幕| 久久精品青青大伊人av| 国产亚洲毛片在线| 亚洲欧美日韩综合国产aⅴ| 午夜在线播放视频欧美| 国产精品久久久一区二区三区| 欧美一区二区黄色| 亚洲无线一线二线三线区别av| 国产精品久久久久9999吃药| 国产精品一区在线播放| 亚洲精品国产精品国自产在线| 亚洲久久成人| 亚洲视频一区二区在线观看| 国产精品国产三级国产普通话三级| 欧美色图麻豆| 六月天综合网| 91久久夜色精品国产九色| 欧美在线视频导航| 国产女人精品视频| 一区二区三区av| 欧美综合二区| 久久久国产精品一区| 在线观看国产日韩| 欧美日韩成人综合天天影院| 伊人久久大香线蕉av超碰演员| 免费在线观看精品| 亚洲人在线视频| 亚洲精品视频一区| 亚洲一区二区三| 国产精品欧美经典| 欧美国产激情二区三区| 伊人一区二区三区久久精品| 国产亚洲一区二区三区| 久久久另类综合| 亚洲电影激情视频网站| 亚洲国内在线|