谈谈ARM中断嵌套

发布者:Asawen最新更新时间:2024-07-22 来源: cnblogs关键字:ARM  中断嵌套 手机看文章 扫描二维码
随时随地手机看文章

1 何为中断嵌套

中断嵌套就是指高优先级的事件可以打断低优先级的事件(反过来不可以),而处理完高优先级事件后还得回来继续处理低优先级事件。

打个比方,你在看电视(一般任务),你妈叫你洗2只碗(中断来了),你刚洗完一只,你爸叫你去打水(中断也被中断了,还让不让人活啊),由于你爸更有威信(优先级更高),所以你必须得先去打水,等你打完水,还得回来继续洗碗,洗完碗才能继续看电视。这个过程就是带中断嵌套的中断。

还有一种使用错误的中断嵌套,就是高优先级事件可以被低优先级事件打断,这是个比较严重的问题,虽然也是嵌套了,但完全偏离的中断嵌套的初衷,后面会分析这种情况。

下文提到的中断嵌套都指的是高优先级事件打断低优先级事件的中断嵌套。

2 为什么需要中断嵌套

对最紧急的事件进行相应是实时系统的关键,紧急事件有很多,但总有轻重,如果最紧急的事件得不到处理,就可能酿成灾难。

3  处理器是否支持中断嵌套

你可能会问,我的处理器能支持中断嵌套吗,这个还要具体情况具体分析。一款处理器能否支持中断嵌套,最重要的是看它是否具有保存中断现场的能力,这个包括两方面,一是保存处理器的寄存器文件,二是保存中断控制器的硬件环境。保存处理器的寄存器文件很简单,直接压栈就可以了,而保存中断控制器的硬件环境就不一定能实现了,这要求中断控制器具有硬件栈(因为软件是无法访问中断控制器的内部环境的)。

下面就具体进行分析,分析对象:

STM32F(CORTEX-M3)

NXP的LPC系列(ARM7)

ST的STR7(ARM7)

先透露一下结论,支持中断嵌套的只有STM32F和STR7。

3.1  LPC系列

先谈谈ARM7TDMI(以下简称ARM7)。ARM7本身没有集成中断控制器,而是由芯片厂商自己实现,市场上出现了形形色色的基于ARM7的微控制器

ARM7大部分中断都在IRQ下处理,而进入IRQ后是无法再被中断的(就好像你妈叫你洗碗的时候,你带着耳机听歌,所以听不到你爸的命令)。但是我还是想实现中断嵌套,怎么办呢?于是程序员开动脑筋,想出了办法:退出IRQ,在SYS模式下执行中断代码(很多情况下确实是这么做的)。这样又产生了新的问题:优先级问题怎么解决?继续努力:退出IRQ的时候禁止比当前优先级低的中断源产生IRQ中断,执行完代码的时候使能。但这要求中断控制器具有挂起未响应中断(而且已被禁止)的能力。

脑子有点乱,下面用表格3.1来表示解决问题的过程。

步骤

问题

解决方法

1

IRQ模式无法被新的IRQ中断

切换到SYS模式去执行中断代码

2

SYS模式会被低优先级的IRQ中断源打断

关闭低优先级IRQ中断源

3

被禁止的低优先级IRQ中断需要被挂起

取决于中断控制器的实现方式

表格3.1 ARM7解决中断嵌套问题的过程

 

以LPC2368为例(为什么用LPC2368?很简单,因为作者用过,而且可以代表这个系列),表格3.1中的步骤1、2都实现了,但是步骤3没实现,因为该中断控制器无法保存被禁止且被挂起的中断。作者读过一些在该微处理器上实现中断嵌套的代码,基本上是只实现了步骤1,因此实际上一种错误的中断嵌套。

3.2  STR7

STR7(ARM7TDMI)的中断控制器同样是厂商实现的,但是本身就实现了中断状态的硬件压栈(CPU工作寄存器的保存还是需要软件控制),所以中断嵌套是可以实现的。

3.3  STM32F

STM32F1和STM32F2系列用的是CORTEX-M3CPU,CORTEX-M3本身集成了NVIC(可嵌套的向量中断控制器),可以说是一个非常先进的中断控制器,甚至连CPU工作寄存器都会自动压栈,建议读一下《CORTEX-M3权威指南》这本书。总之,CORTEX-M3的中断控制器基本把保存现场的工作都做了,程序员终于解放了,中断嵌套也得到了完美实现。

4 名词解释

4.1   VIC与NVIC

VIC是向量中断控制器,主要意思是每一个中断线连接到一个中断函数的地址,有点像数学中的向量(或者说是数组)。

NVIC则是在VIC的基础上实现了中断嵌套。


关键字:ARM  中断嵌套 引用地址:谈谈ARM中断嵌套

上一篇:S3C2440 存储器控制器分析
下一篇:linux-2.6.24.3下移植SD/MMC到S3C2440上的全历程

推荐阅读最新更新时间:2024-11-06 11:12

ARM裸机点LED
1 汇编实现: .global _start _start: // 把外设的基地址告诉CPU ldr r0, =0x70000000 //对于6410来说,内存(0x00000000~0x60000000),外设(0x70000000-0x7fffffff) orr r0, r0, #0x13 //外设大小:256M mcr p15,0,r0,c15,c2,4 //把r0的值(包括了外设基地址+外设大小)告诉cpu // 关看门狗 ldr r0, =0x7E004000 mov r1, #0 str r1, // 设置GP
[单片机]
闷声发大财的ARM凭什么这么牛?
   有一家公司一直保持着低调和神秘,但这并不妨碍它拥有极高的市占率和让人艳羡的利润率。它是英国最顶尖的科技公司之一,也曾被《福布斯》评为世界五大最具创新力公司之一,可是直到去年孙正义以320亿美元的价格(43%的溢价)收购了这家公司,它的名字才开始出现在人们的视线中。下面就随嵌入式小编一起来了解一下相关内容吧。   它就是半导体知识产权提供商 ARM ,或者说它是一家不生产芯片的芯片商,而大家耳熟能详的芯片商一般是英特尔、AMD、三星、高通等公司。   自 ARM 公司1990年成立至今,基于 ARM 架构的芯片全球出货量累计达950亿,覆盖了全球80%的人口,去年出货量为167亿;世界上超过95%的智能手机采用ARM设计的处理
[嵌入式]
基于ARM嵌入式的视频监控系统的设计
目前,嵌入式系统在视频监控中的应用越来越广泛。伴随着网络的强大功能,视频监控更侧重网络监控方案,要求体积小、远程化、成本低、功耗小、操作界面人性化等。本系统基于嵌入式Linux 平台上利用USB 摄像头采集视频图像,通过视频图像压缩及结合网络进行视频图像传输,使远程监控成为可能。 1 系统概述 视频图像监控系统由4 部分组成, 分别为视频图像采集、视频图像处理、视频图像传输、视频图像显示。视频图像采集部分由数字摄像头、USB 通道和嵌入式处理器构成、视频图像处理主要是视频图像压缩,由算法实现、视频图像传输主要利用视频服务器来实现、视频图像显示主要是在远程的主机上实现视频图像的浏览、保存和处理等,Linux 主机上由应用程序实现
[单片机]
基于<font color='red'>ARM</font>嵌入式的视频监控系统的设计
ARM启动代码中的断言伪指令ASSERT
ASSERT :DEF:ENDIAN_CHANGE ASSERT :DEF:ENDIAN_CHANGE ;DCD 0x070000ea ] | b ResetHandler ] 1、ASSERT :DEF:ENDIAN_CHANGE ASSERT 是断言伪指令,语法是:ASSERT +逻辑表达式 def 是逻辑伪操作符,格式为: :DEF:label,作用是:判断label是否定义过 //*****************补充,如果label未定义,编译器在编译的时候会报错。 2、四句蓝色的指令能且只能执行一句,并且前三句若执行跳转后处理程序的最后一句也是 b ResetHandler 3、 相当于endi
[单片机]
关于ARM时钟体系的寄存器配置
一:时钟来源体系 时钟配置决定了一个芯片的时钟来源,CPU的工作频率,内存控制器的时钟频率等等,从结果来看,寄存器控制出了三个时钟路线,FCLK、HCLK和PCLK;FCLK——供给CPU使用,HCLK—— AHB总线供给内存控制器,中断控制器等使用;PCLK—— APB 总线供给uart,I2C等使用;三个时钟的频率依次由高到底;三个时钟频率的比例可分为如下: 由图可看出,时钟频率的比例由HDIVN与PDIVN寄存器控制,这两个寄存器属于CLKDIVN 中的;那么FCLK的来源又是哪呢? 由时钟产生模块图表可以看出CLKCNTL寄存器的控制来源于MPLL,所以FCLK的时钟来源于MPLL,那么MPLL是由谁控制的呢?
[单片机]
关于<font color='red'>ARM</font>时钟体系的寄存器配置
基于ARM9和CPLD的输入输出系统设计
简介:嵌人式丁业控制系统的突出特点是在高低温、高电磁辐射环境下的抗干扰性和可靠稳定性。和PLC系统相比。其明显的优点是处理速度快、方便进行工业以太网的组建、编程方便、通用性好,而且价格仅仅是PLC的几分之一,具有很好的发展前景。本论文主要论述了以EP9315和MAX2_EPM240为核心的嵌入式输入输出系统的设计。 1 系统构成 整个嵌入式输入输出系统分为嵌入式系统、应用模块(即输入输出模块)和转换模块三部分,总体结构如图1所示。 图1系统结构框图 1.1 嵌入式系统 本设计选择CirrusLogic公司高性能的ARM9嵌入式微处理器EP9315.该微处理器具有ARM920T内核所有的优异性能。丰富的集成外设
[单片机]
基于<font color='red'>ARM</font>9和CPLD的输入输出系统设计
ARM架构之异常与中断
ARM920T架构中有7中运行模式: 1.用户模式(user) 2.快中断模式(fiq) 3.中断模式(irq) 4.超级用户模式(svc) 5.中止模式(abt) 6.系统模式(sys) 7.未定义模式(und) ARM在处理异常和中断的时候都会到中断向量表中寻找相对应的异常与中断处理程序地址,通过跳转指令去执行相关的异常与中断的处理程序。 在ARM检测到异常或中断时,系统会进入相对应的运行模式,如中断进入IRQ模式,具体进入什么中断可以通过读取CPSR寄存器的值来判断。在进入相关的运行模式中,各个模式都有自己专属的寄存器,不同于通用寄存器,这些是只有进入该模式才有的寄存器,所以在进入异常中断处理程序之前,要保存除了专用
[单片机]
<font color='red'>ARM</font>架构之异常与<font color='red'>中断</font>
ARM Cortex-M4处理器 Gear Fit拆解
    Samsung Gear 2 与 GALAXY S5 之后,iFixit 再度为我们带来 Samsung Gear Fit 的分解图。 Samsung GALAXY S5、Gear 2 以及 Gear Fit 在 11 日已经正式上市,iFixit 这家专门维修的拆解网站也在这几天陆续为我们带来了 Gear 2、GALAXY S5 的拆解图,而稍早他们也发布了系列 Gear Fit 的图片我们一览。 这款采用曲面 Super AMOLED 面板,解析度在 432 x 128 的智慧型手表采用了 STMicroelectronics 180MHz 32bit ARM Cortex-M4 处理器,型号为 STM32F429Z
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved