嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置ppt课件

上传人:我*** 文档编号:148571509 上传时间:2020-10-21 格式:PPTX 页数:9 大小:62.58KB
返回 下载 相关 举报
嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置ppt课件_第1页
第1页 / 共9页
嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置ppt课件_第2页
第2页 / 共9页
嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置ppt课件_第3页
第3页 / 共9页
嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置ppt课件_第4页
第4页 / 共9页
嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置ppt课件_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置ppt课件》由会员分享,可在线阅读,更多相关《嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置ppt课件(9页珍藏版)》请在金锄头文库上搜索。

1、嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置,前言 1 arm中断向量两种设置方法 2 X86与arm处理器中断向量表比较 3 arm结构中中断向量表的动态配置方法 4 结论,一般32位ARM嵌入式系统的中断向量表是程序编译前设置好的。在编写32位ARM嵌入式系统的中断服务程序、设置和修改ARM体系结构的中断向量表时,常感到相当麻烦,不得不修改汇编代码,对不喜欢使用汇编代码编程的程序员尤其如此。当需要在程序运行过程中动态修改中断向量的程序时会感到更为不便,不得不增加很多分支处理指令才能实现。为此本文提出一种简便高效的配置方法,实现了ROM固化程序在运行时动态配置arm嵌入式系统中断向量

2、表的功能。,前言,在32位arm系统中,一般都是在中断向量表中放置一条分支指令或PC寄存器加载指令,实现程序跳转到中断服务例程的功能。例如: IRQEntry B HandleIRQ ;跳转范围较小 B HandleFIQ 或IRQEntry LDR PC,=HandleIRQ ;跳转的范围是任意32位地址空间 LDR PC,=HandleFIQ LDR伪指令等效生成1条存储读取指令和1条32位常数定义指令。32位常数存储在LDR指令附近的存储单元中,相对偏移小于4KB。该32位数据就是要跳转到的中断服务程序入口地址。,1 arm中断向量两种设置方法,之所以使用LDR伪指令,是因为arm的RI

3、SC指令为单字指令,不能装载32位的立即数(常数),无法直接把一个32位常数数据或地址数据装载到寄存器中。下面一般程序与上述伪指令功能等效,但中断向量表描述得更为清晰。其中VectorTable为相对LDR指令的偏移量: IRQEntry LDR PC,VectorTable+0 ;与LDR PC,=HandleIRQ等效 LDR PC,VectorTable+4 ;与LDR PC,=HandleFIQ等效 ,嵌入式开发教程,VectorTable DCD HandleTRQ DCD HandleFIQ HandleIRQ HandleFIQ 一般ARM嵌入式系统的程序都是固化在从000000

4、00H开始的低端ROM空间中,中断向量表VectorTable也是固化在ROM中,所以上述两种方法都无法在程序运行时动态随机修改中断向量表。不论对于初学ARM处理器的程序员还是有经验的程序员,设置中断向量都相当繁琐,必须修改arm的C程序的启动代码。一段晦涩的汇编代码很不方便,比较容易出错。,嵌入式开发教程,实模式X86程序员都熟悉,在X86体系结构的PC系统中,不论是用汇编还是用C语言,都可以动态随机地设置、修改中断向量表只需要简单地把中断程序例程的入口地址写入到中断向量表数据区,即可完成向量表的设置。 X86向量表设置方便的原因有两个。其一是中断向量表与程序代码完全分离,中断向量表设置在R

5、AM数据空间,向量表存放的数据是纯粹地址数据;而在arm向量表中存放的是与中断服务例程入口有关的一条分支指令。另一个原因是,除BIOS外,大多数PC程序都是在运行时加载到RAM中的,程序数据是不加区别的,所以可以很容易在程序运行的过程中从数据生成程序,并可以很容易把CPU控制权转到新生成的程序中。,2 X86与arm处理器中断向量表比较,表面上看,在ARM第二种中断向量设置方法的向量表VectorTable中也是纯地址数据,不含指令代码,似乎可以把VectorTable设置在RAM数据段中。然而一般arm体系的ROM代码段和RAM数据段间的偏移远大于2 12,故超出了LDR使用PC为基址的相对

6、寻址范围。 代码中的VectorTable是一个与当前PC间的一个偏移,LDR指令的相对地址是在编译时计算的,要求VectorTable2 12,所以VectorTable不能随意安排在RAM空间中。VectorTable一般只能安排在中断跳转指令附近的代码区内中。,嵌入式开发教程,要在arm结构中实现与X86中一样方便的在中断向量的随机存取功能, 其它所有中断向量都可以指向了在RAM数据区中的新向量表,并给定一个统一的中断编号。中断服务程序可以放在任何模块文件中编译连接,不需要修改原向量表代码,但在打开中断使用中断服务例程前必须使用C函数SetVector()设置中断向量。,3 arm结构中中断向量表的动态配置方法,本文提出的中断向量表配置策略和实现方法,简便高效,仅比标准处理方法增加一条指令的执行时间。当把arm的C初始化汇编代码中所有中断源(包括扩展的内外部中断源)的向量都指向了新向量表,并统一编号,此后编写任何中断服务程序几乎不需要修改汇编代码,C初始化代码完全可以对C程序员隐藏起来,并可以像在X86体系下一样动态地设置和修改中断向量。,4 结论,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号