- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM内核的中断技术
ARM内核的中断技术
摘要:以ARM7TDMI处理器为例,详细介绍ARM内核的三种中断:常规中断、快中断和软件中断;结合应用,给出优化的中断处理程序的ARM指令代码,对电子设计人员有效大的参考价值。
??? 关键词:ARM 中断 快速 精简指令系统
1 ARM7TDMI简介
ARM7TDMI是一款经典的通用32位微处理器,采用精简指令系统(RISC)和流水线结构。典型应用如GPS、PDA、双向寻呼机、移动电话、板卡间高速通信等。
ARM7TDMI 定义有7种工作模式,本文涉及到的有:用户模式,程序正常运行时的模式;快中断模式,处理器响应快中断而进入的模式;中断模式,处理响应常规中断而进入的模式;监督模式,操作系统的保护模式。处理器响应软件中断时即进入监督模式。下面重点介绍ARM7TDMI的中断特性。主要特性如表1所列。
表1 中断特性表
向量地址 ?中断类型 ?工作模式 ?优先级 ?返回地址0x8 ?软件中断 ?SWI模式 ?6 ?pc-40x18 ?常规则中断 ?IRQ模式 ?4 ?pc-80x1C ?快中断 ?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 /
您可能关注的文档
- 2013高考数学一轮复习精练理数第二章 第五节 函数的图象.doc
- 2013高考试卷分析与专家点评新课标卷2.doc
- 2013高考语文作文时文阅读第一辑你教会了我游戏规则.doc
- 2013高考语文作文时文阅读第一辑情色网球进化史.doc
- 2013高考语文作文时文阅读第二辑京港澳当高速公路成为河道.doc
- 2013高考语文作文时文阅读第二辑北京的暴雨大考.doc
- 2013高考语文作文时文阅读第二辑奥运来了,没人比我们更能玩.doc
- 2013高考语文作文时文阅读第二辑美国六声Sorry不容易.doc
- 2013高考语文作文青春阅读第一辑第二信笺.doc
- 2013高考语文时文阅读精选忌成事而说.doc
文档评论(0)