下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM内核的中断技术 摘要:以ARM7TDMI处理器为例,详细介绍ARM内核的三种中断:常规中断、快中断和软件中断;结合应用,给出优化的中断处理程序的ARM指令代码,对电子设计人员有效大的参考价值。 关键词:ARM 中断 快速 精简指令系统1 ARM7TDMI简介ARM7TDMI是一款经典的通用32位微处理器,采用精简指令系统(RISC)和流水线结构。典型应用如GPS、PDA、双向寻呼机、移动电话、板卡间高速通信等。ARM7TDMI定义有7种工作模式,本文涉及到的有:用户模式
2、,程序正常运行时的模式;快中断模式,处理器响应快中断而进入的模式;中断模式,处理响应常规中断而进入的模式;监督模式,操作系统的保护模式。处理器响应软件中断时即进入监督模式。下面重点介绍ARM7TDMI的中断特性。主要特性如表1所列。表1 中断特性表向量地址中断类型工作模式优先级返回地址0x8软件中断SWI模式6pc-40x18常规则中断IRQ模式4pc-80x1C快中断FIQ模式3pc-8ARM7TDMI具有常规中断(IRQ)、快中断(FIQ)和软件中断(SoftWare Interrupt)三种中方式。常规中断和快中断都是硬件中断。快中断是为支持数据传输或快速数据通道而设计的,为快速处理快中
3、断。快中断被设为最高中断优先级;在快中断模式增设了7个私有工作寄存器,从而避免了由于主工作寄存器数据的保存和恢复而带来了额外开销;快中断处理程序处于异常向量表的最后位置,因此可紧接异常向量表书写快中断处理程序,而不必进行程序跳转操作,避免了刷新指令流水线和高速缓存。软件中断是一种由用户设置的同步中断,由程序指令产生,不像硬件中断那样由外部事件触发。软件中断允许运行在用户模式的程序进入监督模式,并运行监督态下的函数。在ARM7TDMI的硬件调试系统中,应用程序可利用软件中断来申请半自主(semihosting)式操作,例如,打开主机中的一个文件、向调试通道发送一个字符等等(这些操作必须依赖主机中
4、C程序库才能运行,因此被称为半自主式的)。利用软件中断机制,可以直观和高效地仿真调试应用程序。另外,软件中断也可用于一般性的程序控制。2 响应中断和中断返回(1)当中断产生时,ARM7TDMI将执行的操作把当前程序状态寄存器(CPSR)的内容拷贝到相应的备份程序状态寄存器(SPSR)。当前工作模式、中断屏蔽位和状态标志被保存下来。转入相应的模式,并关闭常规中断。如响应快中断,则同时关闭快中断。把程序计数器(pc)的值减4后,存入相应的连接寄存器(1r)。将程序计数器指向相应的中断向量。(2)由中断返回时,ARM7TDMI将完成的操作将备份程序状态寄存器的内容拷贝到当前程序状态寄存器,恢复中断前
5、的状态。清除相应禁止中断位(如果已设置的话)。把连接寄存器的值拷贝到程序计数器,继续运行原程序。(3)返回地址的计算ARM7TDMI采用流水线结构:当一条指令被执行时,下一条指令正被译码,而第三条指令被从内存中取出。当程序计数器未更新的,pc指向从内存中取出的指令,(pc-4)指向当前指令的一条指令。处理器响应软件中断时,由于软件中断由指令自身产生,程序计数器还没有更新,(pc-4)正好指向当前指令的下一条指令。因此,只要在中断处理程序最后加入MOVS pc,lr把连接寄存器的值赋给程序计数器即可。ARM7TDMI总是在一条指令执行完毕后,才去检查是否有硬件中断信号和中断屏蔽状态。此时,程序计
6、数器已经更新,(pc-4)指向当前指令的下两条指令。因此要先把连接寄存器的内容减去4(指向pc-8)后,再赋给程序计数器。要添加的代码是SUBS pc,lr #43 中断处理程序的编写(1)软件中断处理程序的编写软件中断指令的格式如图1所示。低24位立即数为软件中断号。在中断处理程序中,必须首先得到软件中断号,然后根据中断号执行不同代码。以下的中断处理程序,在软件中断号为1时,将端口A的0号引脚置“1”。 STMFD sp!,r0-r12,lr /保存各工作寄存器LDR r0,lr,#-4 /得到该软件中断指令BIC r0,r0,#0xff000000 /从
7、中取出中断号ADR r2,SWIJumpTable /r2指向代码入口表LDR pc,r2,r0,LSL #2 /把r0中的值乘4后加到r2。将/程序计数器指向中断号对应的代码入口地址SWIJumpTable /代码入口表DCD SWInum0DCD SWInum1SWInum0 /中断号为0时的处理代码(略)SWInum1 /中断号为1时的处理代码MOV r0,#0x80000000 /r0指向端口ASTRB r0,#0x01 /A口0脚置“1”B EndofSWI /跳转EndofSWILDMFD sp! r0-r12,pc /恢复各寄存器,返回原程序(2)常规中断处理程序的编写为快速执行
8、,常规中断处理程序一般用汇编指令编写。在编写可重入常规中断处理程序(运行时仍可响应常规中断)时,必须先把链接寄存器和程序用到的工作寄存器入栈,然后才能开放中断;各寄存器出栈前,必须先关闭中断。这样可防止因寄存器崩溃而无法返回的情况发生。下文介绍了一个与中控制器相配置的可重入的常规中断处理程序。当若干中断源同时有效时,中断控制器(基址为IntBase)把16个中断源中优先级最高的一个存入中断寄存器(偏移地址为IntLevel)中,并发出硬件中断信号。SUB lr,lr,#4 /得至并保存返回地址STMFD sp!,lrMRS r14,SPSR /把SPSR和sl2入栈STMFD sp!,r12,
9、r14MOV r12,#IntBaseLDR r12,r12,#IntLevel /将最高优先级号存入r12MRS r14,CPSR. /开中断BIC r14,r14,#0x80MSR CPSR_c,r14LDR PC,PC,r12,LSL #2 /将pc指向该优先级号对应的处理代码入口NOP /补位DCD Priority0Handler /代码入口表DCD Priority 1 HandlerDCD Priority 2 HandlerPriority0Handler /0优先级中断处理代码STMFD sp!,r0-r11 /保存工作寄存器(略) /具体代码LDMFD sp!,r0-r11 /恢复工作寄存器MRS r12,CPSR /关中断ORR r12,r12,#0x80MSR CPSR_c,r12LDMFD sp!,r12,r14 /恢复r12MSR SPSR_csxf,r14 /恢复备用程序状态寄存器(SPSR)LDMFD sp!,pc /返回原程序Priority 1 H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《当代资本主义的新》课件
- 2024-2025学年北京房山区初三(上)期末英语试卷
- 办公室坐班劳务合同(2篇)
- 《民国新气象》课件
- 《Matlab App Designer设计入门及实战》课件汇 汤全武 第6-12章 仪器、容器、图窗工具和航天航空组件-基于MATLAB App Designer的通信原理系统
- 2025借款合同解除协议书
- 2025保险代理合同的范本
- 2024年度四川省公共营养师之三级营养师能力测试试卷A卷附答案
- 2024年锇项目提案报告
- 2025年中国糖尿病药物市场评估分析及发展前景调研战略研究报告
- 当前国际形势
- 湘贺水利枢纽水电站设计
- 高压线防护架搭设施工方案
- 四川省成都市2021-2022学年高一(上)期末调研考试物理试题Word版含解析
- 二次元作业指导书
- GB/T 15180-2010重交通道路石油沥青
- 公路工程质量与安全管理课件
- 计算机基础知识整理课件
- 高一数学必修2《事件的关系和运算》课件
- 四年级道德与法治试卷分析范文(通用5篇)
- 封条模板A4直接打印版
评论
0/150
提交评论