在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位常数数据或地址数据装载到寄存器中。下面一般程序与上述伪指令功能等效,但中断向量表描述得更为清晰。其中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程序的启动代码。一段晦涩的汇编代码很不方便,比较容易出错。
关键字:ARM 中断向量 ROM空间
引用地址:
ARM中断向量设计方案
推荐阅读最新更新时间:2024-03-16 12:59
arm-linux-gcc4.4.3编译s3c2410平台linux内核
一、首先下载linux内核: linux-2.6.14.tar.bz2 下载地址: http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2 二、解压linux-2.6.14.tar.bz2: tar -jxvf linux-2.6.14.tar.bz2 三、配置Makefile文件: 1、打开源码根目录下的Makefile文件: gedit Makefile 修改Makefile文件: ARCH ?= arm CROSS_COMPILE ?= arm-linux- 2、查看目录结构: ls -l linux-2.6.14/arch/arm/ d
[单片机]
处理器核心你只懂A53/A72?R系列新品发布了!
就在7月,软银正式与ARM签订协议,确认以320亿美元现金收购英国移动芯片公司ARM。而到了现在,ARM向孙正义正式交出了首份作品——Cortex-R52。 Cortex-R系核心是ARM旗下的四大产品线之一,除了我们日常听到了Cortex-A系列高性能核心之外,还有定位物联网的Cortex-R系列、低功耗微处理器Cortex-M系列以及安全解决方案芯片SecurCore。
全新的Cortex-R52基于改进版的ARMv8-R架构,也就是先前Cortex-R5的升级版,主要面向汽车、工业、医疗保健等自动化领域,另 外,同为R系列的Cortex-R7/R8则主要面向存储低延迟、强化了Modem的连接性能、主攻物
[手机便携]
Android ARM汇编语言
简介 ARM是Advanced RISC Machine的首字母缩写,它可以称之为一家嵌入式处理器的提供商,也可以理解为一种处理器的架构,还可以将它作为一套完整的处理器指令集。 原生程序与ARM汇编语言 对于使用ARM处理器的Android手机来说,它最终会生成相应的ARM elf可执行文件,分析软件的核心功能只能从这个elf文件入手。 一个ARM原生程序如下: EXPORT main //main函数 main var_C= -0xc //识别出的栈变量 var_8 = -8 STMFD SP!,{R11,LR} //指令 压入堆栈 ADD R11,SP,#4 SUB SP,SP,#8 STR R0, S
[单片机]
ARM的其他外围接口
ARM芯片除了运算器核心外,根据不同需要还有各种外围接口。 最常用的外围接口就是串口,通常ARM芯片会集成若干个串口。在运行Linux时,串口的最重要作用就是进行软件的调试。S3C2440集成了3个串口(UART),软件调试需要一个串口,其他串口可以扩展其他的外围设备,如GPRS模块,GPS模块等。S3C2440的集成串口只需要电平转换芯片就可以直接扩展成DB9串口,联接其他设备,常用的电平转换芯片是MAX232。 S3C2440集成了LCD控制器,可直接通过LCD接口联接LCD。S3C2440的LCD控制器支持STN、TFT型的LCD,以显示真彩色图形图像。有些ARM芯片如AT91RM9200没有集成LCD控制器,因为大多工业控
[单片机]
ARM9学习笔记之——汇编
ARM系列芯片与PC系列(可能我说法不太准确)芯片在指令设计上就有本质的区别。ARM中每条指令是精简指令集要么是32位,要么是16位。而PC的指令是复杂指令集,一条指令可以由多个字节组成。 在写ARM汇编程序时,发现ARM的指令非常的灵活,同样一个功能可以使用多种方式实现。给开发者更多DIY的地方。以下是一些小总结,如有不正确的地方欢迎指正。 1. 关于函数调用方法 在ARM汇编中,函数调用非常灵活。 (1)BL指令 bl initmem ;调用 mem .... mov pc , lr ;返回 BL指令在编译时,是以当前指令地址为基准相对跳转
[单片机]
ARM_Core的处理器模式与寄存器
ARM处理器的工作状态:ARM处理器有两种工作状态。在程序的执行过程中,处理器可以在两种工作状态之间切换,并且不影响 相应寄存器中的内容。 ARM状态,此时处理器执行32位对齐的ARM指令;BX指令,当操作数寄存器最低位为0时,进入ARM状态。 Thumb,此时处理器执行16位对齐的Thumb指令。BX指令,当操作数寄存器最低位为1时,进入Thumb状态。 BX(Branch Exchange):BX Rn; ##其中Rn可以是R0-R15中的任意一个。指令通过将寄存器Rn的内容拷贝到程序计数器PC 来完成4Gbyte的地址空间的跳转。 在进入异常中断后,
[单片机]
ARM汇编:BNE和TST和BEQ
(1)例一:TST与BNE搭配 TST r0,#02 BNE sleep LDR r1,#0 解释:位比较,先进行and运算,如果r0第2位不为1,则与的结果为0,设置标志位zero=1,继续下面的ldr指令。反之,zero=0,跳转到sleep执行。 bne指令: 非零则跳转 个人总结:TST 和BNE 连用: 先是用TST 进行位与运算,然后将位与的结果与0比较,如果不为0,则跳到bne紧跟着的标记(如bne sleep,则跳到sleep处)。 TST 和BEQ连用: 先是用tst进行位与运算,然后将位与的结果与0比较,如果为0,则跳到beq紧跟着的标记(如bne AAAA,则跳到AAAA处)。 (2
[单片机]
基于ARM与μClinux的RTU设计
摘要:基于ARM处理器S3C4510B和μClinux的RTU总体结构设计、RTU硬件扩展方法以及在μCllinux环境下开发RTU应用程序的经验。定义了一种RTU母板总线,介绍了由处理器总线驱动RTU母板总线的接口电路原理以及RTU母板总线上扩展硬件模块的方法。
关键词:RTU S3C4510B μClinux 嵌入式系统
在电力系统变电所以及电气化铁道牵引变电所远动控制系统中,远程数据采集与监控终端(RTU)是关键设备,实现遥控、遥测、遥信等功能。
采用工业控制计算机,扩展测控硬件接口电路,是RTU设计常见的方法,但是这种方法设计的RTU成本高、体积大、耗电大。采用80C196等单片机设计RTU,由于单片机的运算处理和
[嵌入式]