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

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

3天內不再提示

異常和中斷處理簡介

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:李倩 ? 2018-06-25 10:49 ? 次閱讀

關于異常處理,分為三部分:

1. ARM異常和模式:core處理異常時的操作,幾種模式介紹。2. Vector table:3. 異常優(yōu)先級4. lr偏移:幾種異常如何返回

異常和中斷處理簡介

嵌入式系統(tǒng)中異常處理是核心之一。高效的處理能夠極大的提升系統(tǒng)的性能。ARM處理器一共有7種可以暫停指令的執(zhí)行序列的異常。主要分為三個部分:

1. Exception handling2. Interrupts3. Interrupt handling schemes今天我們主要介紹第一部分

Exception Handling

1.ARM Processor Exceptions And Modes

任何一種中斷模式都可以通過手動的修改cpsr的值來進入。但是User和System模式是僅有的2個不能由相應中斷進入的模式,換句話說,我們必須要通過手動修改cpsr才能進入。

當一個異常產(chǎn)生的時候,core會自動進行如下4步:1. saves the cpsr to the spsr of the exception mode2. saves the pc to the lr of the exception mode3. sets the cpsr to the exception mode4. sets the pc to the address of the exception handler

需要注意的是,當異常產(chǎn)生的時候,ARM處理器總是會切換到ARM狀態(tài)。

2.Vector Table

handler定位在相應內存位置中,如下圖的IRQ,FIQ

0x00000018: 0xe59ffa38 IRQ ; ldr pc, [pc, #irq]0x0000001c: 0xe59ffa38 FIQ ; ldr pc, [pc, #fiq]

3.Exception Priorities

4.Link Register Offset

如下三種從IRQ和FIQ異常處理返回的例子

例1:

handler

...

SUBS pc, r14, #4 ;pc = r14 -4

因為SUB后的S和pc作為目標寄存器,cpsr的值會自動從spsr中恢復出來

例2:

handler

SUB r14, r14, #4 ;r14 -= 4

...

...

MOVS pc, r14

r14 = r14 -4, pc = r14 , cpsr =spsr(因為S)

例3:

handler

SUB r14, r14, #4 ; r14 = r14 - 4

STMFD r13!, {r0-r3, r14} ;store context

...

LDMFD r13!, {r0-r3, r14}^ ;return

STMFD,LDMFD 分別提供了pop/push的功能。STMFD sp!, {r0-r3, r14}就是依次將r14, r3, r2, r1放入棧中。LDMFD r13!, {r0-r3, r14}^則依次反向取出。^這個符號,則強制cpsr從spsr中恢復出來。

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

    關注

    134

    文章

    9097

    瀏覽量

    367607
  • 嵌入式系統(tǒng)

    關注

    41

    文章

    3593

    瀏覽量

    129482
  • 中斷處理
    +關注

    關注

    0

    文章

    94

    瀏覽量

    10976

原文標題:嵌入式ARM系統(tǒng)異常和中斷處理知識總結

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么是ARM中斷事件?ARM中斷異常處理具體過程

    ARM處理器是一種流行的處理器架構,用于許多現(xiàn)代移動設備和嵌入式系統(tǒng)中。中斷異常是ARM處理器中的兩個重要概念,它們是
    發(fā)表于 09-05 15:45 ?1910次閱讀
    什么是ARM<b class='flag-5'>中斷</b>事件?ARM<b class='flag-5'>中斷</b><b class='flag-5'>異常</b><b class='flag-5'>處理</b>具體過程

    如何返回異常中斷處理

    關于異常處理,分為三部分:ARM異常和模式:core處理異常時的操作,幾種模式介紹。Vector table:
    發(fā)表于 12-14 09:23

    中斷事件的異常處理是什么意思

    M0內核支持的資源Cortex-M0處理器最多支持32個外部中斷(通常稱作IRQ),還有一個被稱作不可屏蔽中斷的特殊中斷。中斷事件的
    發(fā)表于 12-21 06:50

    Linux 2.6 中斷處理原理簡介

    Linux 2.6 中斷處理原理簡介 中斷描述符表(Interrupt Descriptor Table,IDT)是一個系統(tǒng)表,它與每一個中斷
    發(fā)表于 02-05 10:52 ?795次閱讀

    微機原理--中斷異常

    微機原理--中斷異常
    發(fā)表于 12-12 22:07 ?0次下載

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

    3.4 異常中斷處理 異常中斷是用戶程序中最基本的一種執(zhí)行流程和形態(tài)。這部分主要對ARM架構下的異常中斷做詳細說明。 ARM有7種類型的
    發(fā)表于 10-18 13:29 ?1次下載

    ARM中異常中斷問題詳情分析總結

    ARM中異常中斷的類型問題分析總結 一、ARM中異常中斷的類型: 異常中斷名稱 含義 復位(Reset) 當處理器復位引腳有效時,系統(tǒng)產(chǎn)生復位異常中
    發(fā)表于 04-05 10:51 ?1314次閱讀

    STM32的Cortex-M3中斷異常處理

    的接口緊密相連,可以實現(xiàn)低延遲的中斷處理和有效處理處理晚到的中斷。嵌套向量中斷控制器管理著包括
    發(fā)表于 11-16 15:35 ?8237次閱讀
    STM32的Cortex-M3<b class='flag-5'>中斷</b><b class='flag-5'>異常</b><b class='flag-5'>處理</b>

    ARM異常中斷的原因及處理措施

    當ARM異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當前指令后,將跳轉到相應的異常中斷處理程序處執(zhí)行。當異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生
    的頭像 發(fā)表于 06-17 10:05 ?8100次閱讀

    當ARM異常中斷發(fā)生時的處理措施

    外部中斷請求(IRQ) 當處理器的外部中斷請求引腳有效,而且CPSR的寄存器的I控制位被清除時,處理器產(chǎn)生外部中斷請求異常中斷。系統(tǒng)中個外設
    的頭像 發(fā)表于 08-27 14:21 ?2617次閱讀

    處理器中異常中斷解決

    異常是能夠引起程序流偏離正常流程的事件,當異常發(fā)生時,正在執(zhí)行的程序就會被掛起,處理器轉而執(zhí)行一塊與該事件相關的代碼(異常處理)。事件可以是
    的頭像 發(fā)表于 10-12 17:14 ?5097次閱讀

    Cortex-M0處理器內核異常中斷簡介

    在Cortex‐M0內核上搭載了一個異常響應系統(tǒng),支持眾多的系統(tǒng)異常和外部中斷。其中,編號為1-15的對應系統(tǒng)異常,大于等于16的則全是外部中斷
    的頭像 發(fā)表于 06-01 14:41 ?4884次閱讀

    Linux是如何利用陷阱門處理中斷異常

    中斷異常處理程序執(zhí)行的代碼不是一個進程。而是一個內核控制路徑,比一個進程的上下文要少,建立或終止需要的時間很少。
    發(fā)表于 08-17 11:31 ?566次閱讀

    arm處理器有哪些中斷源?arm處理器對異常中斷的響應過程

    arm處理器有哪些中斷源?arm處理器對異常中斷的響應過程? ARM處理器是一種廣泛使用的嵌入式處理
    的頭像 發(fā)表于 10-19 16:35 ?1459次閱讀

    ARM中的異常中斷是如何實現(xiàn)進入中斷程序的?如何進入呢?

    ARM中的異常中斷是如何實現(xiàn)進入中斷程序的?如何進入呢? 在計算機系統(tǒng)中,異常中斷是兩個常見的概念。 在ARM中,異常
    的頭像 發(fā)表于 10-19 16:36 ?1041次閱讀