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