|
64+的中斷系統(tǒng)和以往的不同,中斷是基于事件的。整個(gè)硬件CPU接收15個(gè)中斷,但中斷源可以支持最多128個(gè)。64+將中斷源視為事件"Event",128個(gè)事件可以分別通過配置連接到15個(gè)CPU中斷。而128個(gè)事件每連續(xù)32個(gè)可以合并到四個(gè)固定的事件中,即Event0(對(duì)應(yīng)事件號(hào)0-31)、Event1(對(duì)應(yīng)事件號(hào)32-63)、Event2(對(duì)應(yīng)事件號(hào)64-95)、Event3(對(duì)應(yīng)事件號(hào)96-127)(實(shí)際最大有效中斷源為124個(gè))。這樣可以通過數(shù)量有限的CPU中斷來管理大量的中斷源,使用靈活。
DSP/BIOS默認(rèn)將Event0-3分別對(duì)應(yīng)到HWI_INT7-10四個(gè)中斷號(hào)。TI驅(qū)動(dòng)通過注冊(cè)Event到這四個(gè)事件,進(jìn)而對(duì)應(yīng)到相應(yīng)中斷。在中斷HWI_INT7-10服務(wù)函數(shù)中再去判斷具體是哪個(gè)事件觸發(fā)的中斷。
另外還有幾個(gè)中斷是系統(tǒng)硬件復(fù)位中斷、NMI中斷、預(yù)保留中斷及仿真通訊中斷。HWI_INT4-6、HWI_INT13、HWI_INT15這5個(gè)中斷是未使用中斷。用戶增加中斷服務(wù)的話,可以將事件號(hào)對(duì)應(yīng)到這5個(gè)中斷來實(shí)現(xiàn)。
以T1高32位定時(shí)中斷為例,介紹一下DM6437應(yīng)用中如何在DSP/BIOS操作系統(tǒng)中實(shí)現(xiàn)硬件中斷。首先用戶需要將T1配置為雙32位定時(shí)器,T1高32位定時(shí)器中斷服務(wù)函數(shù)為 T1HIsr()。將事件對(duì)應(yīng)到中斷HWI_INT5。
1 在DSP/BIOS圖形配置界面下打開"Scheduling"->"HWI-Hardware Interrupu Service"。
2 下拉表中有15個(gè)中斷。觀察各中斷使用情況。右鍵點(diǎn)擊"HWI_INT5",彈出下拉菜單中選"Properties"進(jìn)入中斷屬性編輯欄。在"General"欄中,"interrpu selection number"項(xiàng)填入事件號(hào)"7"(6437數(shù)據(jù)手冊(cè)中有中斷源對(duì)應(yīng)的事件號(hào))。"function"項(xiàng)填入中斷服務(wù)函數(shù)名"_T1HIsr"(需在C語言編寫的函數(shù)前加下劃線)。然后點(diǎn)"應(yīng)用","確定"即可退出。
注:一些人說還要在"Dispatcher"中勾選"Use Dispatcher"前的復(fù)選框。那是復(fù)合事件Event0-3才需要的,所以HWI_INT7-10四個(gè)中斷里的"Use Dispatcher"需要勾上。如果用戶定義的新中斷不是使用復(fù)合事件而是使用單一事件觸發(fā)的話不需要勾選。但勾選的話不會(huì)影響使用。因?yàn)樾轮袛辔词褂肊vent0-3。
3 在應(yīng)用程序中使能中斷。如"C64_enableIER( 1 << 5 )" 使能中斷HWI_INT5。
4 編寫中斷服務(wù)函數(shù)"void T1HIsr()"。
注。仿真器通訊中斷可能對(duì)新中斷有影響,有可能導(dǎo)致中斷表現(xiàn)不正常?梢栽"release"下編譯,以減少仿真引起的大量中斷。
|
|