一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM的異常有哪些?ARM的異常向量表基地址

安芯教育科技 ? 來源:Arm精選 ? 2024-08-07 09:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

以下文章來源于Arm精選 ,作者baron

1、51單片機的中斷響應(yīng)模型

我們先回憶一下在單片機上的中斷的使用。

如下圖所示,左邊是51單片機的管腳圖,P3.0-P3.5是單片機對應(yīng)的中斷管教,當(dāng)該管教電平發(fā)生變化時,觸發(fā)cpu異常。

當(dāng)cpu來了一個異常時(中斷),cpu跳轉(zhuǎn)到異常向量地址處,執(zhí)行handler函數(shù),執(zhí)行完畢后再回來

wKgZomayzHmAH8hSAAQGWrN7aLc934.jpg

那么cpu異常時,跳轉(zhuǎn)的是哪個地址呢,其實這都是cpu出廠時設(shè)計好的。如下圖所示,左邊是cpu設(shè)計好的異常向量表基地址。右邊是軟件對異常的處理。

當(dāng)來了一個uart中斷時,cpu觸發(fā)異常跳轉(zhuǎn)到0023地址處,而該地址處執(zhí)行LJMP UART0_ISR指令,跳轉(zhuǎn)UART0_IAR函數(shù)去處理中斷…

wKgZomayzJyAXhfoAAJARjrTErc972.png

2、ARM的異常有哪?

在ARMV7上,ARM異常有:RESET、swi、undef、prefetch、data abort、irq、fiq

其中RESET、swi是同步異常,其余是異步異常

在ARMV8上,ARM異常有serror、irq、fiq、Synchronous

其中Synchronous是同步異常,serror、irq、fiq是異步異常

解釋一下什么是同步異常什么是異步異常?

同步異常:軟件觸發(fā)行為、知道什么時候發(fā)生 例如:svc、smc、hyc指令觸發(fā)的都是同步異常

異步異常:軟硬件行為,不知道什么時候發(fā)生,發(fā)生時間是隨機的 例如:irq中斷觸發(fā)irq異常、fiq中斷觸發(fā)fiq異?!?/p>

當(dāng)異常發(fā)生了,ARM CORE就要跳轉(zhuǎn)到異常向量表地址處了。其實是跳轉(zhuǎn)到:異?;刂?+ 異常向量表偏移處

3、ARM的異常向量表基地址

(1)、ARMV7的異常向量表基地址

主要為VBAR、HVBAR、MVBAR三個寄存器,其中VBAR是banked.

wKgZomayzKeABzd7AAI6_qEN6Lo038.png

(2)、ARMV8的異常向量表基地址

主要為VBAR_EL1、VBAR_EL2、VBAR_EL3三個寄存器

wKgaomayzLCATJJJAAGXURhwgiM269.png

4、ARM的向量表offset

(1)、armv7的異常向量表的定義

其實在armv7上有多張異常向量表,下圖分別列舉出在secure、non-secure側(cè)的兩張異常向量表

wKgaomayzMGAcoFcAAI5QlmqZ6w171.png

wKgaomayzNCAHRJmAAITXrtxIRM582.png

(2)、在armv8上異常向量表

wKgaomayzOSAGbpeAAHzlPRBVHA101.png

實際上有四組表,每組表有四個異常入口,分別對應(yīng)同步異常,IRQ,F(xiàn)IQ和出錯異常。

如果發(fā)生異常并不會導(dǎo)致exception level切換,并且使用的棧指針是SP_EL0,那么使用第一組異常向量表。

如果發(fā)生異常并不會導(dǎo)致exception level切換,并且使用的棧指針是SP_EL1/2/3,那么使用第二組異常向量表。

如果發(fā)生異常會導(dǎo)致exception level切換,并且比目的exception level低一級的exception

level運行在AARCH64模式,那么使用第三組異常向量表。

如果發(fā)生異常會導(dǎo)致exception level切換,并且比目的exception level低一級的exception

level運行在AARCH32模式,那么使用第四組異常向量表。

另外我們還可以看到的一點是,每一個異常入口不再僅僅占用4bytes的空間,而是占用0x80 bytes空間,也就是說,每一個異常入口可以放置多條指令,而不僅僅是一條跳轉(zhuǎn)指令

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

    關(guān)注

    6067

    文章

    44991

    瀏覽量

    650415
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9352

    瀏覽量

    377519
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11080

    瀏覽量

    217058
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    905

    瀏覽量

    42797

原文標(biāo)題:ARM Core如何響應(yīng)中斷的

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    ARM9的高端異常向量基址硬件如何配置?

    請問: S3C2440可以通過設(shè)置/清除CP15協(xié)處理器的寄存器1的bit13來設(shè)置高端/低端異常向量地址,我從網(wǎng)上看到說也可以通過硬件電路控制,但是我一直沒有查到硬件如何配置???我想了解下,謝謝誰來解惑,
    發(fā)表于 04-25 07:45

    ARM寄存器分析以及異常處理方法

    :(1)從spsr恢復(fù)cpsr(2)從lr恢復(fù)pc注意:這些操作必須在ARM狀態(tài)執(zhí)行TIPS:(1)異常向量表中除了FIQ中斷都是4個字節(jié),所以只夠存放一段異常處理程序的代碼的首地址
    發(fā)表于 09-10 07:00

    arm異常的處理方法

    。例如:如果是swi指令引起的異常,ARM核最后就會修改pc的值為0x08。是不是異常向量表,一定要放在0x00000000或0xffff00000其始的地址呢?答案:不是,現(xiàn)在cor
    發(fā)表于 04-20 10:52

    資料下載:[architecture]-ARM Core如何響應(yīng)中斷的

    目錄1、51單片機的中斷響應(yīng)模型2、ARM異常有哪?3、ARM異常向量表基地址4、ARM
    發(fā)表于 07-01 08:44

    淺析ARM異常分類與異常處理

    的。并且由于每一個內(nèi)存都剛好是4字節(jié)  (即32位),剛好能放一條ARM指令?! ∩厦嫠f的異常向量地址是從0x00開始的,實際上有些是從0xFFFF0000  開始的,例如ARM720T、A
    發(fā)表于 04-26 09:29

    ARM中斷向量表異常處理過程解析

    中斷向量表|異常處理過程中斷隨機產(chǎn)生之后,怎么跳轉(zhuǎn)到中斷的處理程序中去(中斷向量表)SWI軟中斷指令:模擬CPU外面的某個硬件的管腳產(chǎn)生中斷信號4. 軟中斷處理程序?qū)嵗髡撸何鞫熘改?/div>
    發(fā)表于 05-05 10:16

    一文弄懂ARM芯片的地址重映射

    異常向量表就存放在0x80000000起始的64個(其中有32個存放異常向量)物理存儲單元中。但是ARM核發(fā)生異常(中斷)后是從0x00000000~0x0000003F
    發(fā)表于 05-23 15:03

    ARM未定義指令異常和SVC異常是什么意思

    異常向量表的概述在上一章,我們學(xué)習(xí)了建立異常向量表,這里我們可以通過看arm的手冊,我們每一種異常都對應(yīng)一個工作模式,下面我就來嘗試觸發(fā)一下未定義指令
    發(fā)表于 05-26 16:17

    教你一種ARM處理異常中斷的方法

    道理相同),由于異常模式不同以及ARM內(nèi)核采用流水線技術(shù),異常處理程序里要根據(jù)異常模式計算返回地址。跳入
    發(fā)表于 08-18 15:26

    異常向量表重映射

    異常向量表重映射 向量表異常產(chǎn)生時內(nèi)核獲取異常處理函數(shù)入口地址的一塊連續(xù)內(nèi)存,每一個異常
    發(fā)表于 03-26 09:34 ?20次下載

    如何理解ARM異常、中斷和向量表

    以前,我一直很疑惑這個“ ARM異常 、 中斷以 及他們的 向量表 ”是怎么回事,他們到底是怎么實現(xiàn)的,沒有想到今天偶然看到(ARM System Developers Guide
    發(fā)表于 06-14 10:34 ?4570次閱讀
    如何理解<b class='flag-5'>ARM</b><b class='flag-5'>異常</b>、中斷和<b class='flag-5'>向量表</b>

    ARM體系結(jié)構(gòu)所支持的異常有哪些含義和所支持的異常類型概述

    ARM 體系結(jié)構(gòu)所支持的異常和具體含義如下:1、復(fù)位(優(yōu)先級1) 當(dāng)處理器的復(fù)位電平有效時,產(chǎn)生復(fù)位異常,程式跳轉(zhuǎn)到復(fù)位異常處執(zhí)行(異常向量
    發(fā)表于 02-26 10:32 ?3次下載
    <b class='flag-5'>ARM</b>體系結(jié)構(gòu)所支持的<b class='flag-5'>異常有</b>哪些含義和所支持的<b class='flag-5'>異常</b>類型概述

    嵌入式系統(tǒng)原理及應(yīng)用教程之ARM異常中斷處理及編程的資料說明

    ARM體系結(jié)構(gòu)中,存在7種異常處理。當(dāng)異常發(fā)生時,處理器會把PC設(shè)置為一個特定的存儲器地址。這一地址放在被稱為
    發(fā)表于 03-20 10:25 ?7次下載
    嵌入式系統(tǒng)原理及應(yīng)用教程之<b class='flag-5'>ARM</b><b class='flag-5'>異常</b>中斷處理及編程的資料說明

    ARM體系結(jié)構(gòu)所支持的異常和具體含義

    當(dāng)ARM處理器或協(xié)處理器遇見不能處理的指令時,產(chǎn)生為定義異常??墒褂迷?b class='flag-5'>異常機制進(jìn)行軟件仿真(異常向量:0x0000,0004);
    的頭像 發(fā)表于 10-24 15:52 ?4274次閱讀

    ARM interrupt-4

    文章目錄前言overview控制器寄存器軟件需要做的工作:中斷控制器初始化外部中斷前言??overviewSoC對中斷的實現(xiàn)機制:異常向量表,此文講過(1)異常向量表是CPU中某些特定地址的特定
    發(fā)表于 12-04 15:36 ?0次下載
    <b class='flag-5'>ARM</b> interrupt-4