7.15.2009

interrupt handling in CE

CE 的 hardware interrupt 由 ISR ,kernel,IST 三者合作。

每個hardware的中斷都會被指定一個ISR來處理 (ISR可以共用)

當中斷發生時,會kernel會呼叫ISR,ISR執行完後,會return一個值。
kernel 由這個值檢查有哪些event 和他相關,set 這些 event。

IST 內會有wait event 的code,這樣就會被通知到。

新支援的 Installtable ISR (IISR)。
可以達成 chain-interrupt 的行為:
kernel 依照該hardware IRQ 註冊的 ISR,一個一個 call,每個 ISR要確認是不是自己要處
理。
如果不是,就return SYS_CHAIN,kernel 就會call下一個 ISR。
如果是,就retrurn 其他的職,kernel 就不會call下一個 ISR。

IISR Sample Code 在 \Public\Common\Oak\Drivers\GIISR

* 有關IRQ disable,enable 的時機,在書中有一張圖說得很清楚。
基本上,就是..一但發生,所有interrupt都disable,ISR處理時,就把其他interrupt打開,自己的還是關。一直到 IST call InterruptDone( ) 該 IRQ 才會再被打開。

沒有留言: