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

上传人:真** 文档编号:243098277 上传时间:2024-09-15 格式:PPTX 页数:9 大小:95.32KB
返回 下载 相关 举报
嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置_第1页
第1页 / 共9页
嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置_第2页
第2页 / 共9页
嵌入式开发教程之ARM嵌入式系统中断向量表的动态配置_第3页
第3页 / 共9页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2011-5-12,#,嵌入式开发教程之,ARM,嵌入式系统中断向量表的动态配置,前言,1 arm,中断向量两种设置方法,2 X86,与,arm,处理器中断向量表比较,3 arm,结构中中断向量表的动态配置方法,4,结论,一般,32,位,ARM,嵌入式系统的中断向量表是程序编译前设置好的。在编写,32,位,ARM,嵌入式系统的中断服务程序、设置和修改,ARM,体系结构的中断向量表时,常感到相当麻烦,不得不修改汇编代码,对不喜欢使用汇编代码编程的程序员尤其如此。当需要在程序运行过程中动态修改中断向量的程序时会感到更为不便,不得不增加很多分支处理指令才能实现。为此本文提出一种简便高效的配置方法,实现了,ROM,固化程序在运行时动态配置,arm,嵌入式系统中断向量表的功能。,前言,在,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,的,RISC,指令为单字指令,不能装载,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,嵌入式系统的程序都是固化在从,00000000H,开始的低端,ROM,空间中,中断向量表,VectorTable,也是固化在,ROM,中,所以上述两种方法都无法在程序运行时动态随机修改中断向量表。不论对于初学,ARM,处理器的程序员还是有经验的程序员,设置中断向量都相当繁琐,必须修改,arm,的,C,程序的启动代码。一段晦涩的汇编代码很不方便,比较容易出错。,嵌入式开发教程,实模式,X86,程序员都熟悉,在,X86,体系结构的,PC,系统中,不论是用汇编还是用,C,语言,都可以动态随机地设置、修改中断向量表,只需要简单地把中断程序例程的入口地址写入到中断向量表数据区,即可完成向量表的设置。,X86,向量表设置方便的原因有两个。其一是中断向量表与程序代码完全分离,中断向量表设置在,RAM,数据空间,向量表存放的数据是纯粹地址数据;而在,arm,向量表中存放的是与中断服务例程入口有关的一条分支指令。另一个原因是,除,BIOS,外,大多数,PC,程序都是在运行时加载到,RAM,中的,程序数据是不加区别的,所以可以很容易在程序运行的过程中从数据生成程序,并可以很容易把,CPU,控制权转到新生成的程序中。,2 X86,与,arm,处理器中断向量表比较,表面上看,在,ARM,第二种中断向量设置方法的向量表,VectorTable,中也是纯地址数据,不含指令代码,似乎可以把,VectorTable,设置在,RAM,数据段中。然而一般,arm,体系的,ROM,代码段和,RAM,数据段间的偏移远大于,2 12,,故超出了,LDR,使用,PC,为基址的相对寻址范围。,代码中的,VectorTable,是一个与当前,PC,间的一个偏移,,LDR,指令的相对地址是在编译时计算的,要求,VectorTable2 12,所以,VectorTable,不能随意安排在,RAM,空间中。,VectorTable,一般只能安排在中断跳转指令附近的代码区内中。,嵌入式开发教程,要在,arm,结构中实现与,X86,中一样方便的在中断向量的随机存取功能,,其它所有中断向量都可以指向了在,RAM,数据区中的新向量表,并给定一个统一的中断编号。中断服务程序可以放在任何模块文件中编译连接,不需要修改原向量表代码,但在打开中断使用中断服务例程前必须使用,C,函数,SetVector(),设置中断向量。,3 arm,结构中中断向量表的动态配置方法,本文提出的中断向量表配置策略和实现方法,简便高效,仅比标准处理方法增加一条指令的执行时间。当把,arm,的,C,初始化汇编代码中所有中断源(包括扩展的内外部中断源)的向量都指向了新向量表,并统一编号,此后编写任何中断服务程序几乎不需要修改汇编代码,,C,初始化代码完全可以对,C,程序员隐藏起来,并可以像在,X86,体系下一样动态地设置和修改中断向量。,4,结论,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!