[gic]-linux和optee的中断处理流程举例(gicv3举例)
★★★ 友情鏈接 : 個人博客導讀首頁—點擊此處 ★★★
環境配置:
在linux/optee雙系統環境下, linux系統的SCR.IRQ=0、SCR.FIQ=1, optee系統的SCR.IRQ=0、SCR.FIQ=0
說明:
group1是非安全中斷、secure group1是安全中斷
舉例
1、當cpu處于REE,來了一個非安全中斷
當cpu處于normal側時,來了一個非安全中斷,根據SCR.NS=1/中斷在group1組,cpu interface將會給cpu一個IRQ,(由于SCR.IRQ=0,IRQ將被routing到EL1),cpu跳轉至linux的irq中斷異常向量表, 處理完畢后再返回到normal(linux)側.
2、當cpu處于TEE,來了一個安全中斷
當cpu處于secure側時,來了一個安全中斷,根據SCR.NS=0/中斷在secure group1組,cpu interface將會給cpu一個IRQ,(由于SCR.IRQ=0,IRQ將被routing到EL1),cpu跳轉至optee的irq中斷異常向量表, 處理完畢后再返回到secure(optee)側.
3、當cpu處于TEE,來了一個非安全中斷
當cpu處于secure側時,來了一個非安全中斷,根據SCR.NS=0/中斷在group1組,cpu interface將會給cpu一個FIQ,(由于SCR.FIQ=0,FIQ將被routing到EL1),跳轉至optee的fiq中斷異常向量表,
再optee的fiq處理函數中,直接調用了smc跳轉到ATF, ATF再切換至normal EL1(linux), 此時SCR.NS的狀態發生變化,根據SCR.NS=1/中斷在group1組,cpu interface會再給cpu發送一個IRQ異常,
cpu跳轉至linux的irq中斷異常向量表,處理完畢后,再依次返回到ATF—返回到optee
4、當cpu處于REE,來了一個安全中斷
當cpu處于normal側時,來了一個安全中斷,根據SCR.NS=0/中斷在group1組,cpu interface將會給cpu一個FIQ,(由于SCR.FIQ=1,FIQ將被routing到EL3),在EL3(ATF)中,判斷該中斷是需要optee來處理的,會切換到optee。
此時SCR.NS的狀態發生變化,根據SCR.NS=0/中斷在secure group1組,cpu interface會再給cpu發送一個IRQ異常,cpu跳轉至optee的irq中斷異常向量表, 處理完畢后再依次返回到ATF—返回到linux
答疑
[答疑]-中斷流程舉例:在REE(SCR.FIQ=1)側時產生了FIQ,跳轉到EL3后做了哪些事情?
[答疑]-中斷流程舉例:在TEE側時產生了FIQ,回到REE后為啥又產生了IRQ?
歡迎添加微信、微信群,多多交流
總結
以上是生活随笔為你收集整理的[gic]-linux和optee的中断处理流程举例(gicv3举例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [core]-ARM A76学习笔记
- 下一篇: Globalplatform TEE a