Nucleus中斷處理過程!!!!

yangzhao0001發表於2015-09-14

Nucleus的中斷分為管理的和非管理的中斷。

管理中斷:需要向作業系統註冊該中斷向量,中斷產生後通過該中斷向量註冊的低階中斷服務程式(LISR)來啟用高階的中斷服務程式(HISR)。

非管理中斷:不需要通過作業系統進行管理,直接將中斷服務程式掛到中斷向量表上,上下文的儲存與恢復都要使用者自己來做,該中斷自己不能巢狀,最好不要被管理的中斷再次中斷否則會引起堆疊出錯,而且非管理的中斷不能使用絕大多數的Nucleus系統呼叫,因為它可能會破壞作業系統某些保護的資料結構(當有執行緒在執行時)。

非管理的中斷適用於那些比較頻繁的中斷,如果通過作業系統來管理這些中斷的話,其上下文儲存與恢復的時間就比較長,中斷的實時性就不能滿足要求。


Nucleus PLUS 通過把應用程式的 ISRs 區分為低階到高階元件來處理保護問題。


低階中斷:低階中斷服務子程式(LISR)和正常的 ISR 一樣執行,包括使用當前堆疊。Nucleus PLUS 在呼叫 LISR 之前儲存上下文,在 LISR 返回之後恢復上下文(上下文的保持都是由作業系統來完成的)。Nucleus PLUS 支援多個 LISRs 的巢狀。

LISR主要完成硬體中斷的處理,及啟用HISR



高階中斷:

1、高階中斷支援動態建立和刪除。每個 HISR 由它自己的堆疊空間和控制塊。每個的記憶體由應用程式提供。高階中斷一般都是由低階中斷啟用。

2、高階中斷不允許自掛起。

3、高階中斷分成3個優先順序:0, 1, 2.。 

4、高階中斷直接是可以互相搶佔的(在一個低優先順序的 HISR 處理期間,如果一個更高優先等級的 HISR 被啟用,低優先順序的 HISR 以與任務搶先方式相同的方式搶先。)。

5、高階中斷如果被同時觸發多次,一個啟用的計數器維護著每個 HISR。這個計數器用於確保每個 HISR 為每次啟用執行一次。注意:一個已經啟用的 HISR 的每次附加觸發都通過連續呼叫 HISR 來處理。

相關文章