首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 消费类电子 > ARM嵌入式系统中断向量表的动态配置

ARM嵌入式系统中断向量表的动态配置

资料介绍
ARM嵌入式系统中断向量表的动态配置
摘要:通常32位ARM嵌入式系统的中断向量表是在程序编译前设置好的,每次编写中断程
序都要改C程序的汇编启动代码,相当繁琐。本文给出一种配置ARM中断向量表新方法。
该方法比通常方法仅增加一条指令执行时间,简便高效,功能完备,向量表在运行时动
态生成,C程序可以使用固定向量表的启动代码,并可隐藏起来。
    关键词:动态配置 嵌入式系统 ARM 中断向量表
一般32位ARM嵌入式系统的中断向量表是程序编译前设置好的。在编写32位ARM嵌入式
系统的中断服务程序、设置和修改ARM体系结构的中断向量表时,常感到相当麻烦,不得
不修改汇编代码,对不喜欢使用汇编代码编程的程序员尤其如此。当需要在程序运行过
程中动态修改中断向量的程序时会感到更为不便,不得不增加很多分支处理指令才能实
现。为此本文提出一种简便高效的配置方法,实现了ROM固化程序在运行时动态配置ARM
嵌入式系统中断向量表的功能。
1 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位数据就是要跳转到的中断服务程序入口
地址。
之所以使用LDR伪指令,是因为ARM的RISC指令为单字指令,不能装载32位的立即数(
常数),无法直接把一个32位常数数据或地址数据装载到寄存器中。下面一般程序与上
述伪指令功能等效,但……
ARM嵌入式系统中断向量表的动态配置
本地下载

评论