ARM内核的中断技术

发布者:艺泉阁最新更新时间:2021-02-01 来源: eefocus关键字:ARM  内核  中断技术 手机看文章 扫描二维码
随时随地手机看文章

1 ARM7TDMI简介


ARM7TDMI是一款经典的通用32位微处理器,采用精简指令系统(RISC)和流水线结构。典型应用如GPS、PDA、双向寻呼机、移动电话、板卡间高速通信等。


ARM7TDMI 定义有7种工作模式,本文涉及到的有:用户模式,程序正常运行时的模式;快中断模式,处理器响应快中断而进入的模式;中断模式,处理响应常规中断而进入的模式;监督模式,操作系统的保护模式。处理器响应软件中断时即进入监督模式。下面重点介绍ARM7TDMI的中断特性。主要特性如表1所列。


表1 中断特性表


向量地址 中断类型 工作模式 优先级 返回地址

0x8 软件中断 SWI模式 6 pc-4

0x18 常规则中断 IRQ模式 4 pc-8

0x1C 快中断 FIQ模式 3 pc-8


ARM7TDMI具有常规中断(IRQ)、快中断(FIQ)和软件中断(SoftWare Interrupt)三种中方式。常规中断和快中断都是硬件中断。


快中断是为支持数据传输或快速数据通道而设计的,为快速处理快中断。①快中断被设为最高中断优先级; ②在快中断模式增设了7个私有工作寄存器,从而避免了由于主工作寄存器数据的保存和恢复而带来了额外开销;③快中断处理程序处于异常向量表的最后位置,因此可紧接异常向量表书写快中断处理程序,而不必进行程序跳转操作,避免了刷新指令流水线和高速缓存。


软件中断是一种由用户设置的同步中断,由程序指令产生,不像硬件中断那样由外部事件触发。软件中断允许运行在用户模式的程序进入监督模式,并运行监督态下的函数。在 ARM7TDMI的硬件调试系统中,应用程序可利用软件中断来申请半自主(semihosting)式操作,例如,打开主机中的一个文件、向调试通道发送一个字符等等(这些操作必须依赖主机中C程序库才能运行,因此被称为半自主式的)。利用软件中断机制,可以直观和高效地仿真调试应用程序。另外,软件中断也可用于一般性的程序控制。


2 响应中断和中断返回


(1)当中断产生时,ARM7TDMI将执行的操作


①把当前程序状态寄存器(CPSR)的内容拷贝到相应的备份程序状态寄存器(SPSR)。当前工作模式、中断屏蔽位和状态标志被保存下来。


②转入相应的模式,并关闭常规中断。如响应快中断,则同时关闭快中断。


③把程序计数器(pc)的值减4后,存入相应的连接寄存器(1r)。


④将程序计数器指向相应的中断向量。


(2)由中断返回时,ARM7TDMI将完成的操作


①将备份程序状态寄存器的内容拷贝到当前程序状态寄存器,恢复中断前的状态。


②清除相应禁止中断位(如果已设置的话)。


③把连接寄存器的值拷贝到程序计数器,继续运行原程序。


(3)返回地址的计算


ARM7TDMI采用流水线结构:当一条指令被执行时,下一条指令正被译码,而第三条指令被从内存中取出。当程序计数器未更新的,pc指向从内存中取出的指令,(pc-4)指向当前指令的一条指令。


处理器响应软件中断时,由于软件中断由指令自身产生,程序计数器还没有更新,(pc-4)正好指向当前指令的下一条指令。因此,只要在中断处理程序最后加入MOVS pc,lr把连接寄存器的值赋给程序计数器即可。


ARM7TDMI总是在一条指令执行完毕后,才去检查是否有硬件中断信号和中断屏蔽状态。此时,程序计数器已经更新,(pc-4)指向当前指令的下两条指令。因此要先把连接寄存器的内容减去4(指向pc-8)后,再赋给程序计数器。要添加的代码是 SUBS pc,lr #4


3 中断处理程序的编写


(1)软件中断处理程序的编写


软件中断指令的格式如图1所示。低24位立即数为软件中断号。在中断处理程序中,必须首先得到软件中断号,然后根据中断号执行不同代码。以下的中断处理程序,在软件中断号为1时,将端口A的0号引脚置“1”。

[点击在新窗口查看原始图片]


STMFD sp!,{r0-r12,lr} //保存各工作寄存器


LDR r0,{lr,#-4} //得到该软件中断指令


BIC r0,r0,#0xff000000 //从中取出中断号


ADR r2,SWIJumpTable //r2指向代码入口表


LDR pc,[r2,r0,LSL #2] //把r0中的值乘4后加到r2。将//程序计数器指向中断号对应的代码入口地址


SWIJumpTable //代码入口表


DCD SWInum0


DCD SWInum1


……


SWInum0 //中断号为0时的处理代码(略)


SWInum1 //中断号为1时的处理代码


MOV r0,#0x80000000 //r0指向端口A


STRB r0,#0x01 //A口0脚置“1”


B EndofSWI //跳转


EndofSWI


LDMFD sp! {r0-r12,pc} //恢复各寄存器,返回原程序


(2)常规中断处理程序的编写


为快速执行,常规中断处理程序一般用汇编指令编写。在编写可重入常规中断处理程序(运行时仍可响应常规中断)时,必须先把链接寄存器和程序用到的工作寄存器入栈,然后才能开放中断;各寄存器出栈前,必须先关闭中断。这样可防止因寄存器崩溃而无法返回的情况发生。下文介绍了一个与中控制器相配置的可重入的常规中断处理程序。当若干中断源同时有效时,中断控制器(基址为IntBase)把16个中断源中优先级最高的一个存入中断寄存器(偏移地址为 IntLevel)中,并发出硬件中断信号。


SUB lr,lr,#4 //得至并保存返回地址


STMFD sp!,{lr}


MRS r14,SPSR //把SPSR和sl2入栈


STMFD sp!,{r12,r14}


MOV r12,#IntBase


LDR r12,[r12,#IntLevel] //将最高优先级号存入r12


MRS r14,CPSR. //开中断


BIC r14,r14,#0x80


MSR CPSR_c,r14


LDR PC,[PC,r12,LSL #2] //将pc指向该优先级号对应的处理代码入口


NOP //补位


DCD Priority0Handler //代码入口表


DCD Priority 1 Handler


DCD Priority 2 Handler


……


Priority0Handler //0优先级中断处理代码


STMFD sp!,{r0-r11} //保存工作寄存器


……(略) //具体代码


LDMFD sp!,{r0-r11} //恢复工作寄存器


MRS r12,CPSR //关中断


ORR r12,r12,#0x80


MSR CPSR_c,r12


LDMFD sp!,{r12,r14} //恢复r12


MSR SPSR_csxf,r14 //恢复备用程序状态寄存器(SPSR)


LDMFD sp!,{pc}^ //返回原程序


Priority 1 Handler //优先级中断处理代码(略)


(3)快中断处理程序的编写


为保证高速处理,快中断处理程序必须要用汇编语言编写,而且必须是非重入的。一般快中断处理程序主要是些数据存取指令,就不具体介绍了。


结束语

中断技术是处理器和系统芯片开发的重要技术。快速、高效的中断处理程序是实时多任务系统设计成功的关键。

关键字:ARM  内核  中断技术 引用地址:ARM内核的中断技术

上一篇:ARM单片机入门-推荐
下一篇:ARM的学习和开发都需要学习哪些软件

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

英伟达CEO对收购Arm信心满满,欧盟却表示十分担忧
近期在台北电脑展的线上交流环节中,英伟达 CEO 黄仁勋再次谈及 400 亿 美金收购 Arm 交易。黄仁勋表示,对这笔交易最终达成很有信心,因为英伟达与 Arm 是互补的,二者走到一起会迸发出更多创新,这有利于促进竞争,是政府愿意看到的。同时,黄仁勋预计这笔交易将需要 18 个月完成,也就是今年年底或者明年年初。 对此,欧盟相关官员表示担忧。主管欧盟内部市场的欧委会委员布雷顿在接受美国媒体采访时表示,他“紧紧盯着”这项交易,并且“极其了解”这背后的战略意义。 欧盟为什么如此担忧? 英伟达在 2020 年 9 月宣布了 400 亿美元收购 Arm 的计划,这让欧盟感受到威胁。Arm 为全球 500 多家企业提供芯片设计
[半导体设计/制造]
ARM中断处理分析
中断是CPU提供的一个基本的功能; 中断的基本含义应该是允许CPU在执行某个代码序列的过程中停下来执行另外一个代码序列,这里有两层意思,一个是要切换到另一个场景,另一个是当执行完毕之后必须能够恢复原来的场景。 首先讨论如何才能切换到一个新的场景, 当一条指令的执行完之后,CPU会检查有没有中断产生,如果有就halt当前流水线。重载PC寄存器后重新启动流水线。 ARM7一般为3级流水线价格,分别是取指、译码和执行。PC寄存器中存放的是当前时刻(CPU机器时钟周期)取指操作的目标地址,即CPU即将执行的指令的地址由PC寄存器指定,正常情况下PC指针的内容是CPU自动调整的 每个时钟周期自动+4,在发生跳转时,可以通过直接执行修改P
[单片机]
半导体巨头ARM落户国内 将助成都融入全球产业链
    每经编辑 祝裕   每经记者 吴林静 每经编辑 毕陆名   近段时间,全球半导体“隐形巨头”ARM在中国布局的步伐密集起来。   5月初,媒体曝出ARM在中国成立的合资企业安谋科技(中国)有限公司(简称安谋中国)“正式开始运营”。三周后,安谋中国与四川天府新区成都管委会签约,ARM集成电路设计服务平台、ARM中国西部研发中心、教育研发总部和ARM智慧小镇等项目将陆续在天府新区投建。   当“芯片危机”甚嚣尘上,ARM与中国的深度合作引发高度关注。有人认为这样的合作让国产芯片业收到了“橄榄枝”,也有人担心合资并不意味着ARM向中国输出核心技术。那么,进军中国的ARM,对国产芯片是怎样的态度?5月19日,“2018全球独角兽企
[半导体设计/制造]
嵌入式系统的远程参数测量的设计
嵌入式系统由于性价比高开发周期短等优点目前得到了迅猛发展,各类基于 ARM 处理器的应用开发更是如火如荼。这里介绍基于 ARM9 嵌入式芯片 S3C2410 构建的测量监控系统,该系统设计方案先进,集成度较高,在实践中得到了广泛的应用。 2. 嵌入式 ARM9 S3C2410X 简介 S3C2410X 是三星公司提供的基于 ARM920T 内核的 32 位 RISC 处理器,它的低功耗、低价格、高性能设计特别适合于手持设备和通用嵌入式应用场合,为降低整个系统的成本,它提供了丰富的内部设备,包括分开的 16KB 指令 Cache 和 16KB 数据 Cache,MMU 虚拟存储器管理,24bbp 模式下最大 16M 色 TFT
[单片机]
嵌入式系统的远程参数测量的设计
基于ARM和DS18B20的数字测温系统
0 前言   热误差是数控机床的最大误差源,数控机床的温度测试为机床热误差的补偿提供依据。传统的测温方案是将模拟信号通过电缆远距离传输至数据采集卡进行A/D转换并处理,实用中必须解决长线传输和模拟量传感器布线等问题。本文介绍了一种新型的设计方案,控制器采用SAMSUNG公司的32位ARM微控制器S3C44BOX,温度传感器采用单总线数字温度传感器DS18B20。采用数字温度传感器即在测试点完成了信号的数字化,提高了传输的可靠性,同时简化了外围电路,也便于传感器在机床上的布置安装。ARM处理器控制数字温度信号的采集,并与上位PC机通讯,同时其他硬件资源提供热补偿系统其他功能。本文在介绍数字温度传感器DS18B20的基础上,
[单片机]
基于<font color='red'>ARM</font>和DS18B20的数字测温系统
ARM调查显示:机器人将帮助而不是取代人类
新闻摘要: · 61%的受访者认为人工智能将促进社会发展,只有22%的受访者认为将带来负面变化 · 未来的工作:30%的受访者认为对就业的影响是人工智能的最大缺点,并表示建筑、包裹递送和运输将受到最大的影响 · 健康医疗:57%的受访者愿意接受由人工智能医生进行的眼睛检查;41%的受访者不介意由人工智能医生进行脑部手术 · :55%的受访者表示,如果无人驾驶的事故率低于人类驾驶得到证实,他们愿意信任无人驾驶汽车,而有70%的受访者预计在未来十年内信任 2017年6月28日,中国上海—— 根据资助的一项对全球近4000名消费者进行的独立调查显示,仅有少数消费者认为人工智能会导致机器人失控并取代人类就业。考虑
[机器人]
ARM处理器的内存对齐问题
介绍 可以对齐或不对齐的内存访问。对齐的内存访问发生时的数据都位于其自然大小边界。例如,如果该数据类型的大小是4个字节,那么它属于被4整除的内存地址是位于其自然大小边界。未对齐的内存访问发生在所有其他情况下(在上面的例子中,内存地址时,是不能被4整除)。 ARM处理器的设计有效地访问对齐的数据。在ARM处理器上试图访问未对齐的数据会导致不正确的数据或显着的性能损失(这些不同的症状会在稍后讨论)。与此相反,大多数CISC型处理器(即x86)的访问未对齐的数据是无害的。 这份文件将讨论一些比较常见的方式,一个应用程序可能会执行未对齐的内存访问,并提供一些建议的解决方案,以避免这些问题, 。 症状 上述问题,适用于所有ARM架
[单片机]
ARM常用汇编指令介绍
b 跳转指令(跳转范围为32Mb) bl 带返回地址的跳转,指令自动将下一条指令的地址复制到R14寄存器,然后跳转到指定地址去执行,执行完后返回到下一条指令处执行 pc 寄存器R15,程序计数器指向当前执行的程序地址 lr 寄存器R14,链接寄存器保存程序跳转时的返回地址 ldr 从内存中读取数据加载到寄存器中 str 将寄存器中的数据保存到内存 mov 寄存器与寄存器之间的数据传送指令,也可以将立即数传给目标寄存器 add 加法指令 sub 减法指令 bic 位清除指令 orr 逻辑或运算指令 cmp
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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