使用dsp/bios 核心開發應用程式,使用者不能隨意修改中斷向量表的位置,該中斷向量表將有dsp/bios 配置檔案中的mem模組決定。
1.硬體中斷isr的呼叫:(1)使用dsp/bios配置工具靜態呼叫isr函式
(2)使用hwi_dispatchplug等函式動態指定isr函式
當硬體中斷的isr不使用dsp/bios提供的排程程式時,在該isr呼叫任何影響dsp/bios物件的api之前,如需傳送乙個旗語或啟動乙個swi,必須呼叫hwi_enter彙編巨集。一旦呼叫了hwi_enter彙編巨集,在isr結束時還要呼叫hwi_exit.具體來講這些api有:
swi_andn:該函式提供的引數與郵箱值做「與」運算,若郵箱為0,則啟動該軟體中斷;
swi_andnhook
swi_dec:郵箱值減1,若郵箱為0,則啟動該軟體中斷,並恢復郵箱到初始值;
swi_inc:啟動該軟體中斷,並對郵箱值加1;
swi_or:啟動該軟體中斷,並且郵箱值與該函式提供的引數做「或」運算;
swi_orhook
swi_post:啟動軟體中斷;
pip_alloc
pip_free
pip_get
pip_put
prd_tick
sem_post
mbx_post
tsk_yield
tsk_tick
2.編寫硬體中斷isr注意點:
1)在乙個硬體中斷請不要呼叫swi_disable和swi_enable
2)在nmi(不可遮蔽中斷)的isr中不要使用hwi_enter、hwi_exit以及其他任何api函式
3)當硬體中斷的isr使用dsp/bios的hwi排程程式時,不要再使用hwi_enter、hwi_exit
4)當任何有關pip的api呼叫時該管道的讀通知和寫通知函式都會執行,所以,當硬體中斷isr呼叫的pip的api函式時,這些函式將作為isr的一部分
5)當硬體中斷isr呼叫了hwi_enter、hwi_exit(無論dsp/bios呼叫還是自己呼叫),中斷允許重新開啟,這時在乙個硬體中斷中可以響應另乙個硬體中斷
3.hwi模組的api函式
hwi_disable:禁止硬體中斷
hwi_enable:允許硬體中斷
hwi_enter:硬體中斷進入部分巨集定義
hwi_exit:硬體中斷isr退出部分巨集定義
hwi_restore:恢復硬體中斷狀態
hwi_dispatchplug:插入硬體中斷isr函式
硬體中斷 上下部
1.硬體中斷是由硬體觸發,通過電訊號通知到cpu,cpu根據中斷號尋找對應的中斷服務例程進行處理。中斷時需要關閉中斷線上的相同中斷,因此為了快速響應,需要將中斷處理的過程分成上半部和下半部 需要積極快速響應的 不可以併發處理的 涉及到硬體的 例如網絡卡資料拷貝到記憶體的過程 放在上半部,可以推後處理...
中斷系統的硬體結構
ie0 外部中斷0申請標誌位 0 沒有外部中斷申請 1 有外部中斷申請 tf0 定時器0溢位中斷申請標誌位 0 定時器未溢位 1 定時器溢位申請中斷,進中斷後自動清零 ie1 外部中斷1申請標誌位 0 沒有外部中斷申請 1 有外部中斷申請 tf1 定時器1溢位中斷申請標誌位 0 定時器未溢位 1 定...
linux 的硬體中斷向量號
rom bios 時鐘中斷是08號中斷,linux 中怎樣變成了0x20號中斷?8259a 是可程式設計中斷控制器晶元,可管理8個中斷源。通過級聯可最多管理64個中斷源 pc at 使用了2片8259a,占用位址0x20 0x3f 0xa0 0xbf 範圍,共可產生16個中斷源。中斷向量號號是可以程...