www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]TMS320C54x系列DSP的中斷機(jī)制及使用技巧

1 C54x中的中斷機(jī)制

  中斷信號實(shí)質(zhì)上是由硬件或者是軟件驅(qū)動的信號,它能使DSP暫停正在執(zhí)行的程序并進(jìn)入中斷服務(wù)程序(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ā)的。硬件中斷實(shí)際上又分為兩類:一類是由DSP的片外外設(shè)(如A/D轉(zhuǎn)換器)觸發(fā)的,另外一類是由DSP的片內(nèi)外設(shè)(如定時器中斷)觸發(fā)的。硬件中斷又有優(yōu)先級的區(qū)分,這是為了處理同一時刻有多個硬件中斷源觸發(fā)中斷的情況。硬件中斷的種類和優(yōu)先級請參看具體使用的芯片資料。

  如果按照可屏蔽情況分類,中斷又可分為可屏蔽中斷(C54x至多支持16個)和不可屏蔽中斷??善帘沃袛嗍躍T1寄存器中的INTM位和IMR寄存器中相應(yīng)位的影響。當(dāng)INTM=0時,IMR中某位為1,則開放相應(yīng)的中斷。其實(shí),在C54x中硬件中斷并不一定要由外圍器件觸發(fā),它同樣可以由指令I(lǐng)NTR、TRAP觸發(fā),并且不受INTM的限制。有一點(diǎn)需要引起注意的是:指令RESET復(fù)位和硬件RS復(fù)位對IPTR和外圍電路初始化是不相同的。硬件復(fù)位時IPTR總是被置為0x1FF,軟件復(fù)位時則不會修改當(dāng)前IPTR的值。C54x的中斷處理過程分為三個階段:

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

 ?、谥袛囗憫?yīng)。對于軟件中斷和不可屏蔽中斷,CPU是立即響應(yīng)的。對于可屏蔽中斷,要滿足下列條件才能響應(yīng):

  ·優(yōu)先級最高(同時出現(xiàn)多個中斷時)

  ·INTM位為0

  ·IMR中相應(yīng)位為1

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

  ③中斷處理。保護(hù)特定的寄存器,執(zhí)行中斷服務(wù)程序,完成后恢復(fù)寄存器。保護(hù)寄存器的原則是執(zhí)行中斷服務(wù)程序后能正確返回并恢復(fù)原來運(yùn)行程序的環(huán)境。

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

  


 

  2 擴(kuò)展地址模式下的中斷控制

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

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

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

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

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

  

[!--empirenews.page--]
 (2.1) DSP中影響存儲器映射的因素有三個:OVLY、DROM和MP/MC。OVLY是Overlay的簡寫。當(dāng)OVLY=1時,數(shù)據(jù)空間里的一部分RAM變?yōu)橹丿B區(qū)域(Overlay Memory)。這部分重疊區(qū)域同時映射在每一頁程序空間的上部。具體示例如圖2所示(MP/MC=0,C5416)。

  

 

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

  

 

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

  


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

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

  

 

  3 DSP/BIOS下中斷的管理

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

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

  ·在編寫中斷函數(shù)的時候不能再用關(guān)鍵字interrupt來說明中斷函數(shù),因?yàn)锽IOS已經(jīng)自動包括了這個功能。如果再用interrupt,則會造成致命后果。

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

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

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

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

隨著在線會議、直播和游戲語音交流的普及,高質(zhì)量的音頻輸入設(shè)備變得越來越重要。為此,邊緣AI和智能音頻專家XMOS攜手其全球首家增值分銷商飛騰云科技,利用其集邊緣AI、DSP、MCU和靈活I(lǐng)/O于一顆芯片的xcore處理器...

關(guān)鍵字: AI DSP MCU

多DSP集群的實(shí)時信號處理系統(tǒng),通信拓?fù)涞膬?yōu)化直接決定任務(wù)調(diào)度效率與系統(tǒng)吞吐量。RapidIO與SRIO作為嵌入式領(lǐng)域的主流互連協(xié)議,其帶寬利用率差異與QoS配置策略對集群性能的影響尤為顯著。以無線基站、雷達(dá)陣列等典型應(yīng)...

關(guān)鍵字: DSP 通信拓?fù)鋬?yōu)化

隨著5G網(wǎng)絡(luò)普及與物聯(lián)網(wǎng)設(shè)備爆發(fā)式增長,邊緣計(jì)算正從概念驗(yàn)證走向規(guī)?;渴?。據(jù)IDC預(yù)測,2025年全球邊緣數(shù)據(jù)量將占總體數(shù)據(jù)量的50%,這對邊緣節(jié)點(diǎn)的實(shí)時處理能力提出嚴(yán)苛要求。在此背景下,AI加速器的DSP化趨勢與可重...

關(guān)鍵字: AI加速器 DSP

在工業(yè)控制領(lǐng)域,數(shù)字信號處理器(DSP)的性能直接決定了系統(tǒng)的實(shí)時控制能力和可靠性。德州儀器(TI)的C2000系列芯片憑借其卓越的采樣、控制和功率管理能力,長期以來在全球工業(yè)控制市場占據(jù)絕對領(lǐng)導(dǎo)地位,廣泛應(yīng)用于能源、電...

關(guān)鍵字: TI C2000 DSP 格見半導(dǎo)體 芯來 RISC-V 工控

2025年7月16日 – 專注于引入新品的全球電子元器件和工業(yè)自動化產(chǎn)品授權(quán)代理商貿(mào)澤電子 (Mouser Electronics) 持續(xù)供貨Texas Instruments (TI) 的新產(chǎn)品和解決方案。作為一家授權(quán)...

關(guān)鍵字: 線性穩(wěn)壓器 柵極驅(qū)動器 DSP

在當(dāng)今數(shù)字化浪潮的推動下,數(shù)據(jù)流量呈爆炸式增長,數(shù)據(jù)中心、5G通信網(wǎng)絡(luò)以及云計(jì)算等領(lǐng)域?qū)Ω咚俟馔ㄐ诺男枨笥l(fā)迫切。800G光模塊作為高速光通信的關(guān)鍵組件,其性能直接影響著整個通信系統(tǒng)的傳輸效率和可靠性。數(shù)字信號處理(DS...

關(guān)鍵字: 800G DSP PAM4均衡算法

以氫燃料電池空壓機(jī)為研究對象 ,開發(fā)超高速永磁同步電機(jī)控制器 ,采用傳統(tǒng)的IGBT主功率器件 ,且為兩電平主回 路結(jié)構(gòu)形式 ,通過改進(jìn)的V/F控制算法 ,完成了控制器的設(shè)計(jì)。搭建了試驗(yàn)平臺進(jìn)行測試 ,結(jié)果表明 ,控制器能...

關(guān)鍵字: 超高速永磁同步電機(jī) V/F控制 DSP

醫(yī)療設(shè)備智能化進(jìn)程,數(shù)字信號處理器(DSP)作為核心計(jì)算單元,承擔(dān)著實(shí)時處理生物電信號、醫(yī)學(xué)影像等敏感數(shù)據(jù)的重任。然而,隨著醫(yī)療設(shè)備與網(wǎng)絡(luò)互聯(lián)的深化,數(shù)據(jù)泄露風(fēng)險顯著增加。美國《健康保險流通與責(zé)任法案》(HIPAA)明確...

關(guān)鍵字: 醫(yī)療設(shè)備 DSP

數(shù)字信號處理器(DSP)作為實(shí)時信號處理的核心器件,其架構(gòu)設(shè)計(jì)直接決定了運(yùn)算效率與功耗表現(xiàn)。自20世紀(jì)70年代DSP理論誕生以來,其硬件架構(gòu)經(jīng)歷了從馮·諾依曼結(jié)構(gòu)到哈佛結(jié)構(gòu)的演進(jìn),這一過程體現(xiàn)了對實(shí)時性、并行性與存儲帶寬...

關(guān)鍵字: DSP 馮·諾依曼

隨著嵌入式系統(tǒng)對實(shí)時性、多任務(wù)處理能力的需求日益增長,實(shí)時操作系統(tǒng)(RTOS)在數(shù)字信號處理器(DSP)中的移植與性能優(yōu)化成為關(guān)鍵技術(shù)課題。DSP以其高效的數(shù)值計(jì)算能力和并行處理特性,廣泛應(yīng)用于通信、圖像處理、工業(yè)控制等...

關(guān)鍵字: RTOS DSP
關(guān)閉