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