本文主要是關(guān)于TMS320C6455的相關(guān)介紹,并著重對TMS320C6455系列DSP的中斷系統(tǒng)的使用進(jìn)行了詳盡的闡述。
TMS320C6455
TMS320C6455是TI公司推出的的一款新型高性能單核定點(diǎn)DSP.它是TI公司基于第三代先進(jìn)VeloviTIVLIW(超長指令字)結(jié)構(gòu)開發(fā)出來的新產(chǎn)品,在通信,醫(yī)療圖像,無線傳輸方面都可以大有作為.TMS320C6455主頻達(dá)到了1GHz,1ns的指令周期.每周期執(zhí)行8條32位指令,最大峰值速度達(dá)到8000MIPS.這意味著.在1G時鐘頻率下,8000個16位“16位的MACs能在1秒鐘發(fā)生.TMS320C6455還帶有Seria/RapidlOfr)總線,互連速率每秒高達(dá)25Gbits,實(shí)現(xiàn)了極高的多處理性能,降低了系統(tǒng)消耗,比此前的外部存儲器接口快12倍,這使得多DSP級連變得十分方便.TMS320CC6455片內(nèi)是基于C64xx內(nèi)核的L1/L2存儲結(jié)構(gòu).片上集成有大量的存儲空間.L1P為32K字節(jié),L1D為32K字節(jié)L2為2M字節(jié)、比此前C64x器的存儲器容量件翻一番,其中L1P和L2都可直接映射到存儲空間。
TMS320C6455的外圍總線包括:一個內(nèi)部集成電路總線(I2C).兩個多路緩沖串口總線fMcBSPs),兩個64位通用定時器(可以配置成4個32位定時器),一個可配置的16位或32位主機(jī)接口(HPI6/HPI32).一個PCI總線,一個16管腳的通用輸入/輸出端口(GPIO),一個10/100/1000M以太網(wǎng)媒體訪問控制器(EMAC)。一個無縫外部存儲器接口(64一bitEMIFA),一個32位DDR2SDRAM接口。
C6455由于自帶千兆EMAC,外接PHY物理層芯片即可實(shí)現(xiàn)一個千兆以太網(wǎng)口。千兆以太網(wǎng)的實(shí)現(xiàn)使得C6455嵌入式處理器與臺式機(jī)等設(shè)備的數(shù)據(jù)傳輸變得異常方便。TI為C6455等處理器提供了NDK(NetworkDevelopKit),通過NDK的使用可以簡化C6455中TCP/IP或者UDP等數(shù)據(jù)傳輸協(xié)議的實(shí)現(xiàn)。
基于TMS320C6455系列DSP的中斷系統(tǒng)的使用
仔細(xì)觀察上圖,可以看出C6455有一下幾種中斷:
1.Reset
2.NMI不可屏蔽中斷
3.EXCEP硬件異常
4.12個普通中斷INT[15:4]
我們使用的最多的也就是普通中斷,所以這也是本文的重點(diǎn)。
接下來,沿著INT[15:4]往后退,看到的是InterruptSelector,它的功能好比一個篩子(shuffle),對所有中斷事件進(jìn)行選擇性映射。如下圖示:
看了這個圖,我們又不難發(fā)現(xiàn),中斷選擇器是一個128--》12的映射,這也就意味著,有116個系統(tǒng)事件被過濾掉了。
接著往回走,可以看到,中斷選擇器有三個輸入,分別是:
RESET
Event[3:0]
Event[127:4]
RESET不看了,硬件重啟。
EVENT[127:4]是系統(tǒng)事件,這個事件的編號根據(jù)芯片的不同而不同,拿6455來說,部分映射情況如下面兩個圖片所示:
不難看出,這些編號都是固定的,基本囊括了芯片上所有模塊的事件。
最后,比較特別的是Event[3:0],它是組合事件,通過下圖的介紹應(yīng)該就一目了然了。
可見,Event0對應(yīng)4-31號事件的組合事件,Event2對應(yīng)32-63號事件的組合事件,以此類推。
那么,怎么組合呢?
這就不得不從寄存器開始說起了。首先,先看如下3個寄存器組:
(注:每組都是4個32位寄存器,每一組的EVTxxx0[3:0]都不使用,故這里不涉及到組合事件)
系統(tǒng)事件發(fā)生時(124個),它們在事件標(biāo)志寄存器中(EVTFLAGx)的對應(yīng)位會被置1,此時可以通過向EVTCLR寄存器中對應(yīng)位寫入1來清除中斷標(biāo)志,然后執(zhí)行中斷服務(wù)程序。若不清除,那么相同事件再次發(fā)生時會產(chǎn)生問題。故,手動清除中斷標(biāo)志是必須的!且只能通過向EVTCLR寄存器中寫入1來清除,不能直接向EVTFLAG寄存器寫入0,因?yàn)镋VTFLAG寄存器是ReadOnly的。
另外,EVTSET寄存器的存在意義就是我們可以手動產(chǎn)生中斷,這一點(diǎn)可以讓我們測試中斷服務(wù)程序的功能。
介紹完上面三個基本的寄存器組,我們可以開始討論組合事件的機(jī)制了。先看下圖:
可以明顯的看出,124個事件被分成了4組。然后經(jīng)過兩個寄存器的運(yùn)算,產(chǎn)生組合事件。
下面介紹EVTMASK和MEVTFLAG兩個寄存器組。
EVTMASK寄存器組用于決定每一個組中的哪些事件被屏蔽掉。默認(rèn)情況下,沒有事件被屏蔽(全0)。
鑒于最終的組合事件EVTx的發(fā)生機(jī)制是對Group中所有事件進(jìn)行或運(yùn)算,即只要Group中有一個事件發(fā)生,就代表組合事件發(fā)生。
舉個例子:
假如EVTMASK3=0x0FFFFFFF,那么代表只有事件124,125,126,127參與組合。其他事件96-123都被忽略。
MEVTFLAG寄存器同EVTFLAG寄存器的值相同,表示事件是否發(fā)生。這樣一旦知道了EVTMASK和MEVTFLAG兩個寄存器的值就可以斷定組合事件EVTx(0《=x《=3)是否發(fā)生了。
通過上面的介紹,應(yīng)該已經(jīng)很清楚C6455的中斷機(jī)制了,再貼一張圖來鞏固一下上面所說的內(nèi)容:
說到這里,我們對上圖中紅色框以及它之前的東西了解的很清楚了,下面就是InterruptSelector的機(jī)制了。
其實(shí)很簡單,為12個中斷分別配置對應(yīng)的事件編號即可。只需要3個寄存器就OK啦。
分別是INTMUX1,INTMUX2,INTMUX3。貼一個圖就應(yīng)該很明了了。
舉個例子:
假設(shè)我要讓INT4映射到GPIO4,那么通過查找前面的圖,發(fā)現(xiàn)GPINT4的事件編號是55,那么只要把INTMUX1的低7位設(shè)置成0x37即可。
可見,INT4優(yōu)先級最高,INT15優(yōu)先級最低
結(jié)語
關(guān)于TMS320C6455的相關(guān)介紹就到這了,希望通過本文能讓你對TMS320C6455有更全面的認(rèn)識。