AUTOSAR中斷和異常

2021-10-06 06:48:05 字數 1460 閱讀 1696

在eb中可以將具有給定中斷級別和排隊優先順序的所有isr分配給單個執行緒 當使用eb的os時,中斷應由此os處理,因此mcal_enableallinterrupts和mcal_disableallinterrupts函式被重定向到os的 enableallinterrupts和disableallinterrupts函式。 在autosar os 規範中定義了一類中斷和二類中斷。eb中的中斷level的優先順序順序如下圖1:

圖1 中斷level的優先順序
而在microsar os中,則擴充套件了中斷的型別,見下圖2的中斷優先順序排序:

圖2 中斷level的優先順序
其中,類別0 isr,具有最小的中斷延遲時間,尤其是在sc2或sc4系統中。 這是os標準的擴充套件。例如在os核心切換任務堆疊時使用類別0 isr。

那麼類別1中斷和類別2中斷的區別是什麼?

類別1:內部不允許os api的呼叫,不支援中斷的巢狀,但是支援內聯彙編的方式實現巢狀。

類別2: 允許os api的呼叫,支援中斷的巢狀。

在sc3和sc4系統中,microsar os為記憶體保護錯誤和syscall / trap指令定義os異常處理程式,應用程式無法配置作業系統使用的異常源。即配置工具中不支援配置異常源和相應的屬性。 自未分配的異常源的異常請求由os處理,並通過呼叫panichook()或protectionhook去分析或處理這些異常。

下面給出**,您細品:

/*protectionhook函式定義處:

通過巨集定義隱藏實現細節*/

#define protectionhook(_x) \

do \

} while(0)

#endif

protectionreturntype protectionhook

( statustype fatalerror )

/*protectionhook函式被呼叫處:進行堆疊指標檢查,一不開心就protectionhook了*/

void stackfaultreport

(ostaskvartype *pcbptr)

/* * swap context

*/assert

(pcbptr!=

null);

os_resourcereleaseinternal()

;#if (os_stack_monitoring == 1)if(

!os_stackisendmarkok

(currpcbptr)

)#endif

os_debug

(d_task,

,pcbptr-

>constptr-

>name)

;os_taskswapcontext

(currpcbptr,pcbptr);}

}

中斷和異常

中斷和異常 中斷訊號的處理方式 分緊急部分和不緊急部分 中斷處理 必須能夠重入,以便能夠中斷巢狀 中斷和異常的產生 乙個irq interrupt request 代表中斷控制器上的一根中斷線,和乙個中斷向量 單cpu 可程式設計中斷控制器 pic 多cpu 改進的可程式設計中斷控制器 apic 乙...

中斷和異常

中斷通常定義為乙個事件,該事件改變處理器執行的指令順序。中斷通常分為同步中斷與非同步中斷。異常是同步的,i o中斷是非同步的。中斷可以分為 i o裝置發出的中斷請求 irq 都可以被遮蔽,乙個中斷被遮蔽以後,控制單元就忽略他。只有硬體故障等幾個危急事件才是非遮蔽中斷。異常可以分為 可以糾正的異常,例...

中斷和異常

1 中斷機制的誕生 早期計算機,各程式只能序列執行,系統資源利用率低,為了解決這個問題,從而誕生了作業系統 作為計算機的管理者 引入中斷機制,實現了多道程式併發執行。本質 發生中斷就意味著需要作業系統介入,開展管理工作。2 中斷的概念和作用 1 當中斷發生時,cpu立即進入核心態。2 當中斷發生後,...