在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FIQ為例說明其中斷處理流程

麥辣雞腿堡 ? 來源:TrustZone ? 作者:TrustZone ? 2023-11-07 17:48 ? 次閱讀

1-保存環境

FIQ中斷觸發時, PE將異常發生時的PSTATE保存到SPSR_EL3將返回地址保存到ELR_EL3(以上是由硬件完成的) ,( pstate可能指CPU忙時的電源管理,也可能是其它的,但是肯定關于此時CPU狀態的。)然后跳轉到異常向量 表入口處執行中斷處理流程

2-執行中斷處理流程

fiq_aarch64函數主要由handle_interrupt_exception宏實現,該宏的定義如下:

該函數主要實現了

  • ? 1、 異常切換時的上下文保存
  • ? 2、運行時棧的切換
  • ? 3、 中斷處理函數查詢
  • ? 4、參數設置和跳轉功能。

其詳細流程如下:

.macro handle_interrupt_exception label
    bl save_gp_pmcr_pauth_regs1)
(1)將通用寄存器x0x29以及sp_el0),pmcr以及pauth寄存器保存到sp_el3指定的el3棧中

#if ENABLE_PAUTH
    /* Load and program APIAKey firmware key */
    bl pauth_load_bl31_apiakey
#endif

    mrs x0, spsr_el3
    mrs x1, elr_el3
    stp x0, x1, [sp, #CTX_EL3STATE_OFFSET + CTX_SPSR_EL3]2)
    (2)將spsr_el3elr_el3保存到sp_el3指定的el3棧中

    /* Switch to the runtime stack i.e. SP_EL0 */
    ldr x2, [sp, #CTX_EL3STATE_OFFSET + CTX_RUNTIME_SP]3)
(3)從el3棧中讀取sp_el0棧指針

    mov x20, sp4)
(4)將sp_el3棧指針暫存到x20寄存器中

    msr spsel, #MODE_SP_EL05)
(5)將當前的runtime棧切換為sp_el0

    mov sp, x26)
(6)恢復sp_el0棧的值

    bl plat_ic_get_pending_interrupt_type7)
(7)讀取當前中斷的中斷號,并根據中斷號獲取中斷類型


    cmp x0, #INTR_TYPE_INVAL
    b.eq interrupt_exit_label8)
(8)若中斷類型為非法,則直接退出中斷處理


    bl get_interrupt_type_handler9)
(9)獲取該中斷類型對應的處理函數

    cbz x0, interrupt_exit_label10)
(10)若獲取處理函數失敗,則直接退出中斷處理

    mov x21, x011)
(11)將中斷類型處理函數指針暫存到x21寄存器中


    mov x0, #INTR_ID_UNAVAILABLE

    /* Set the current security state in the 'flags' parameter */
    mrs x2, scr_el3
    ubfx x1, x2, #0, #112)
(12)設置中斷處理函數的輸入參數0和參數1


    /* Restore the reference to the 'handle' i.e. SP_EL3 */
    mov x2, x2013)
(13)將sp_el3指針設置中斷處理函數的輸入參數2


    /* x3 will point to a cookie (not used now) */
    mov x3, xzr14)
(14)設置中斷處理函數的輸入參數3,該參數始終當前為0


    /* Call the interrupt type handler */
    blr x2115)
(15)跳轉到中斷處理函數并執行實際的中斷處理


interrupt_exit_label:                                              
    /* Return from exception, possibly in a different security state */
    b el3_exit

    .endm

(1)將通用寄存器(x0 – x29以及sp_el0),pmcr以及pauth寄存器保存到sp_el3指定的el3棧中

(2)將spsr_el3和elr_el3保存到sp_el3指定的el3棧中

(3)從el3棧中讀取sp_el0棧指針

(4)將sp_el3棧指針暫存到x20寄存器中

(5)將當前的runtime棧切換為sp_el0

(6)恢復sp_el0棧的值

(7)讀取當前中斷的中斷號,并根據中斷號獲取中斷類型

(8)若中斷類型為非法,則直接退出中斷處理

(9)獲取該中斷類型對應的處理函數

(10)若獲取處理函數失敗,則直接退出中斷處理

(11)將中斷類型處理函數指針暫存到x21寄存器中

(12)設置中斷處理函數的輸入參數0和參數1

(13)將sp_el3指針設置中斷處理函數的輸入參數2

(14)設置中斷處理函數的輸入參數3,該參數始終當前為0

(15)跳轉到中斷處理函數并執行實際的中斷處理

在bl31中實際的中斷處理函數有兩類,group 0中斷和secure group 1中斷。 group 0中斷由exception handler framework(ehf)管理,該框架實現了對bl31中group 0中斷的注冊和管理 ,當前sdei框架使用了這種中斷類型。

而secure EL1中斷一般是bl31為bl32接收并轉發給bl32的 ,如optee在bl31中注冊了一個secure el1中斷處理函數opteed_sel1_interrupt_handler,該函數比較簡單,只是執行了異常等級上下文切換,跳轉到bl32的fiq異常處理入口,將中斷處理轉交給bl32。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10868

    瀏覽量

    211844
  • 中斷
    +關注

    關注

    5

    文章

    898

    瀏覽量

    41513
  • 函數
    +關注

    關注

    3

    文章

    4332

    瀏覽量

    62643
收藏 人收藏

    評論

    相關推薦

    ARM中斷模式(IRQ)和快速中斷模式(FIQ)區別比較

    ※ 概念 IRQ(Interrupt Request):指中斷模式。 FIQ(Fast Interrupt Request):指快速中斷模式。 IRQ與FIQ是ARM
    發表于 10-13 10:43

    fx3和fiq為什么會中斷

    所有IRQ和FIQ中斷都被屏蔽。在SDK代碼中,FIQ中斷處理程序永遠不會完成,因此系統完全凍結。我不知道
    發表于 08-16 14:22

    ARM異常中斷處理流程分析

    ,而且CPSR寄存器中的I控制位被清除時,處理器產生外部中斷請求異常中斷。系統中各個外設通常通過該異常中斷請求處理器服務。快速中斷請求(
    發表于 08-28 08:09

    FIQ比IRQ快的原因

    1、FIQ比IRQ快的原因:A、FIQ模式的R8–R14寄存器是獨有的,FIQ處理程序可以不必執行保存和恢復中斷現場的指令。B、
    發表于 11-03 07:59

    中斷處理函數(IRQHandler)的標準流程

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是以i.MXRT的GPIO模塊談談中斷處理函數(IRQHandler)的標準
    發表于 02-09 07:10

    MPC860 的中斷處理技術研究

    MPC860 是網絡通信設備中應用最廣的一款RISC 嵌入式處理器。本文介紹MPC860 的中斷體系結構及中斷發生后服務程序的處理流程;以S
    發表于 05-18 13:08 ?19次下載

    ARM微處理器編程模型之異常中斷處理分析

    3.4 異常中斷處理 異常或中斷是用戶程序中最基本的一種執行流程和形態。這部分主要對ARM架構下的異常中斷做詳細
    發表于 10-18 13:29 ?1次下載

    一種支持多個FIQ的向量中斷控制器設計

    請求( Fast Interrupt Request,FIQ)2種類型的中斷。與IRQ相比,FIQ有額外的5個物理寄存器(R8_fiq - R12_f
    發表于 01-18 16:50 ?0次下載
    一種支持多個<b class='flag-5'>FIQ</b>的向量<b class='flag-5'>中斷</b>控制器設計

    一文讀懂LPC中的中斷處理

    LPC中的中斷處理小結,近來在 LPC 的中斷過程上看了點文獻,作為一個初學者感覺這個內容與其它的處理器還是有很大的區別,比如說三星的 S3C4510B ,兩者在
    發表于 05-30 01:22 ?5392次閱讀

    ARM中斷向量表與響應流程的系列資料詳細說明

    本文檔的主要內容詳細介紹的是ARM中斷向量表與響應流程的系列資料詳細說明包括了:一首先中斷向量表定義在哪里?如何加載?,二 中斷向量表與
    發表于 07-05 17:41 ?2次下載
    ARM<b class='flag-5'>中斷</b>向量表與響應<b class='flag-5'>流程</b>的系列資料詳細<b class='flag-5'>說明</b>

    ARM7的定時器中斷和外部中斷與串口中斷的原理詳細說明

    快速中斷請求(FIQ)要求具有最高優先級。如果分配給FIQ 的請求多于1 個,VIC將中斷請求“相或”后向ARM 處理器產生
    發表于 09-27 17:26 ?14次下載
    ARM7的定時器<b class='flag-5'>中斷</b>和外部<b class='flag-5'>中斷</b>與串口<b class='flag-5'>中斷</b>的原理詳細<b class='flag-5'>說明</b>

    控制IRQ和FIQ中斷的編譯器內部函數 基于Keil MDK

    控制IRQ和FIQ中斷的編譯器內部函數 - 基于Keil MDK
    的頭像 發表于 02-29 16:45 ?2569次閱讀

    痞子衡嵌入式:以i.MXRT1xxx的GPIO模塊談談中斷處理函數(IRQHandler)的標準流程...

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是以i.MXRT的GPIO模塊談談中斷處理函數(IRQHandler)的標準
    發表于 12-05 15:21 ?1次下載
    痞子衡嵌入式:以i.MXRT1xxx的GPIO模塊<b class='flag-5'>為</b><b class='flag-5'>例</b>談談<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>函數(IRQHandler)的標準<b class='flag-5'>流程</b>...

    控制IRQ和FIQ中斷的編譯器內部函數 - 基于Keil MDK

    編譯器內部函數__disable_irq、__enable_irq、__disable_fiq和__enable_fiq用于控制IRQ和FIQ中斷
    發表于 01-26 17:16 ?1次下載
    控制IRQ和<b class='flag-5'>FIQ</b><b class='flag-5'>中斷</b>的編譯器內部函數 - 基于Keil MDK

    Bl31中斷處理流程概述

    中斷處理需要軟件和硬件配合完成,GICv3根據中斷分組情況以及系統當前運行的異常等級確定中斷是以IRQ還是FIQ觸發。 CPU通過設置SCR
    的頭像 發表于 11-07 17:43 ?646次閱讀
    Bl31<b class='flag-5'>中斷</b><b class='flag-5'>處理</b><b class='flag-5'>流程</b>概述
    主站蜘蛛池模板: 成人小视频在线| 久久青草免费91观看| 深爱激情成人| 色批| 日本免费小视频| 男女爱爱视频免费| 超薄肉色丝袜精品足j福利| 99r8这里精品热视频免费看| 欧美三级色| 婷婷亚洲五月| 国产精品丝袜在线观看| 欧美网站黄| 国产一级毛片午夜福| 天堂成人在线| 夜夜爽夜夜操| 天天干天天舔| 天天做天天添天天谢| 俺去啦五月| 午夜tv影院| 午夜精品视频在线看| 欧美成人 色 图| 亚洲mm8成为人影院| 把小嫩嫩曰出白浆| 好大好猛好爽好深视频免费| 国产精品1区2区3区| 黄色在线| 69日本xxxxhd| h黄网站| 种子天堂| 色多多拼多多网站| 激情综合网婷婷| 天天天天操| 亚洲五月六月丁香激情| 精品国产柚木在线观看| 色综合久久五月| 国内精品视频免费观看| 天天摸天天操天天爽| 欧美在线天堂| 亚洲人的天堂男人爽爽爽| 欧美videosex性欧美成人| 91p0rn永久备用地址二|