历史上的今天
返回首页

历史上的今天

今天是:2025年01月28日(星期二)

2021年01月28日 | ARM基础知识教程三

2021-01-28 来源:eefocus

简介:ARM基础知识-ARM中异常中断的种类


**复位(RESET)**

当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面几种情况下:系统加电时;系统复位时;跳转到复位中断向量处执行成为软复位。


**未定义的指令**

当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。


**软件中断**

这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制西线系统功能调用。


**指令与取终止(PrefechAbort)**

如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。


**数据访问终止(DATAABORT)

如果数据访问指令的目标地址不存在,,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断


**外部中断请求(IRQ)**

当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。系统中个外设通过该异常中断请求处理服务。


**快速中断请求(FIQ)**

当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断


异常中断向量表及异常中断优先级

中断向量表指定了个异常中断及其处理程序的对应关系。他通常存放在存储地址的低端。在ARM体系中,异常中断向量表的大小为32字节,其中每个异常中断占据4个字节大小,保留了4个字节空间。

每个异常中断对应的中断向量表中的4个字节的空间中存放了一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。当几个异常中断同时发生时,就必须按照一定的次序来处理这些异常中断。


各个异常中断的中断向量地址以及中断的处理优先级

中断向量地址异常中断类型异常中断模式优先级(6最低)

0x00复位特权模式1

0x04未定义的指令未定义指令终止模式6

0x08软件中断特权模式6

0x0C指令预取终止终止模式5

0x10数据访问终止终止模式2

0x14保留未使用未使用

0x18外部中断请求IRQ模式4

0x1C快速中断请求FIQ模式3




在应用程序中安装异常中断处理程序

1.使用跳转指令:可以在异常中断对应异常向量表中特定位置放置一条跳转指令,直接跳转到该异常中断的处理程序。这种方法有一个缺点,即只能在32M空间范围内跳转。

2.使用数据读取指令LDR:使用数据读取指令LDR向程序计数器PC中直接赋值。这种方法分为两步:先将异常中断处理程序的绝对地址存放在存放在距离向量表4KB范围内的一个存储单元中;再使用数据读取指令LDR将该单元的内容读取到程序计数器PC中。 **在系统复位时安装异常中断处理程序**

1.地址0x00处为ROM的情况

使用数据读取指令LDR示例如下所示:

Vector_Init_Block

LDR PC, Reset_Addr

LDR PC, Undefined_Addr

LDR PC, SW_Addr

LDR PC, Prefeth_Addr

LDR PC, Abort_Addr

NOP

LDR PC, IRQ_Addr

LDR PC, FIQ_Addr


Reset_AddrDCD Start_Boot

Undefined_AddrDCD Undefined_Handle

SW_AddrDCD SWI_Handle

Prefeth_AddrDCD Prefeth_Handle

Abort_AddrDCD Abort_Handle

DCD 0

IRQ_AddrDCD IRQ_Handle

FIQ_AddrDCD FIQ_Handle

使用跳转指令的示例如下所示:

Vector_Init_Block

BL Reset_Handle

BL DCD Undefined_Handle

BL SWI_Handle

BL Prefeth_Handle

BL Abort_Handle

NOP

BL IRQ_Handle

BL FIQ_Handle

2.地址0x00处为RAM的情况

地址0x00处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且,必须使用下面的代码巴中断向量表从ROM中复制到RAM中地址0x00开始处的存储空间中:


MOV r8,#0

ADR r9,Vector_Init_Block

;复制中断向量表(8字)

LDMIA r9!,(r0-r7)

STMIA r8!,(r0-r7)

;复制保存各中断处理函数地址的表(8字words)

LDMIA r9!,(r0-r7)

STMIA r8!,(r0-r7)


推荐阅读

史海拾趣

Anvo-Systems公司的发展小趣事

随着公司业务的不断扩展,Anvo-Systems开始实施国际化战略。公司先后在亚洲、欧洲和北美等地设立了研发中心和生产基地,以更好地满足不同地区的市场需求。同时,Anvo-Systems积极参与国际电子展会和技术交流活动,与全球同行建立了广泛的合作关系。这一全球化布局不仅提升了公司的竞争力,也为公司的长期发展打开了新的空间。

General Cable公司的发展小趣事
采用CMOS技术,功率消耗很小,静态电流典型值为0.02μA,无需使用电源控制开关。
明微公司的发展小趣事

明微公司自创立以来,始终坚持以技术创新为核心竞争力。在数字电视芯片领域,明微团队通过深入研发,成功推出了一款具有高性能、低功耗特点的芯片产品,该产品凭借其卓越的性能和合理的价格,迅速在市场上获得了认可。此后,明微公司继续加大研发投入,不断推出具有竞争力的新产品,逐步在电子行业中崭露头角。

Abracon公司的发展小趣事

随着市场的不断变化,明微公司意识到单一业务领域的发展空间有限。于是,公司决定拓展业务领域,实现多元化发展。在保持数字电视芯片领域优势的同时,明微公司积极进军数据通信、汽车电子等领域,通过引进优秀人才、加强技术研发,成功推出了一系列具有市场竞争力的新产品。这些新业务的拓展不仅为公司带来了新的增长点,也进一步提升了公司的市场竞争力。

Excelitas公司的发展小趣事

为了进一步提升竞争力,Excelitas公司积极寻求与其他企业的战略合作。在一次重要的合作中,Excelitas与一家知名的半导体公司达成合作协议,共同开发新型光电传感器。通过资源整合和优势互补,双方成功推出了多款具有竞争力的产品,实现了互利共赢。这次合作不仅增强了公司的技术实力,还为公司带来了新的市场机遇。

Analog公司的发展小趣事

Excelitas公司自成立以来,一直致力于光电技术的研发与创新。在某次关键的技术突破中,公司成功研发出一种新型高效能LED灯,这种灯在紫外光固化领域具有显著优势。这一技术突破不仅为公司赢得了市场份额,还确立了Excelitas在光电领域的领先地位。公司随后围绕这一技术,推出了一系列相关产品,进一步巩固了市场地位。

问答坊 | AI 解惑

单电源供电下模拟电源和数字电源的分离?

现在有个IC需要模拟5V和数字5V同时供电,我采用一个锂电升压5V给它供电,想询问下只有一个锂电的情况下怎么做到模拟电源和数字电源分离。…

查看全部问答>

高频开关电源设计中的电磁兼容性问题研究

高频开关电源设计中的电磁兼容性问题研究…

查看全部问答>

AD转换程序,急了。。。请大家帮忙看一下。

我是想这样写的,定时器定时2MS,中断标志一个变量之后,启动ADC转换,把转换到的数据发用串口发送出去。。 这样算的话,采样大约是:400HZ。 采用外部基准电压。。。AVCC=5V /***************************** 2010 05 30 ; 功能:ADC转换,然 ...…

查看全部问答>

QQ2440录音放音问题

找不到合适的版块发这贴...就在这里向大家请教了,请不吝赐教 小弟想在QQ2440板上做一个语音采集与压缩程序,现在用一段测试代码在我的主机上可以正常录音放音,但重新编译后转到板上就不行了,测试代码如下: /** record.c **/ #include #inclu ...…

查看全部问答>

C8051F组的焊接问题

请问R16下面的那个没有标的是不是R15?…

查看全部问答>

ulink2下载程序出问题

                                 刚开始做STM32F101系列,写一个小程序一下载就说flash download failed  CORTEX-M3,也按照网上说配置FL ...…

查看全部问答>

Jlink V8可以支持LM4F吗?

不知道现在市面上流行的那些山寨Jlink V8是否支持新出的LM4F MCU?…

查看全部问答>

模拟电子视频教程

哪位有 模拟电子技术 功率放大电路好的视频教程 分享一下 谢谢…

查看全部问答>

关于web远程控制嵌入式设备

查了很久资料,发觉都是把服务器安装在嵌入式设备身上的。。 但是有几点不懂: 1.PC机怎么访问嵌入式设备?   嵌入式设备只是单单插了网线的喔,没有串口连接PC机的。  如果说直接用浏览器打开相关的IP地址的话,那是不是就 ...…

查看全部问答>

msp430单片机与SIM900模块的连接

各位高手,请问sim900与msp430通信是不是只需要将它们的串口连接起来就行了,还需要连其他管脚吗?…

查看全部问答>