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