ARM中断向量两种设置方法
论恒 2022-09-27

  在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程序的启动代码。一段晦涩的汇编代码很不方便,比较容易出错。
 

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 不同的Flash,MCU以及DSP加密的效果

    随着信息技术的发展,信息的载体-芯片的使用也越来越多了,随之而来的芯片安全性的要求也越来越高了,各个芯片厂商对芯片保密性要求越来越高,芯片的加密,保证了芯片中的

    昨天
  • 超声波清洗机系统整体设计方案

    随着超声波技术的不断发展,超声波广泛应用于检测、清洗、焊接、医疗等领域,甚至在纺织、航空领域也能见到它的踪迹。目前,超声的研究和应用可分为功率超声和检测超声两大

    昨天
  • 电子嗅觉系统的硬件结构和软件设计

    摘要:采用气体传感器阵列采集气体信息,通过以AT89C51和ADC0809组成的核心单元进行数据采集和数据处理,以LED显示器显示结果,实现了对多种气体的识别和

    昨天
  • STM32 用 MicroPython 读写 MicroSD 卡的正确姿式

    背景介绍: Sugar 曾发过一篇,按照推文中的方法做大家都会有属于自己的 pyboard。 近期有读者向 Sugar 反馈用 pyboard 向 MicroSD 卡写文件怎么都写不进去,本篇 Sugar 就来给出用 MicroPython 读写 MicroSD 卡的正确方法。 SDIO 接口 MicroSD 卡 看原理图确

    前天
  • 六步操作精简uC/OS-II

    uC/OS-II是最早进入国内的一款开源RTOS,因为代码开源,又有配套的书籍,加上不大的代码量,在嵌入式群体中最为流行。在写“实用单片机系统”第一版之后,就接

    前天
  • MCU八种模式的时钟如何正确配置

    时钟模式的配置以及使用对MCU来说一直是最基础的东西,在何种情况下使用哪一种时钟模式是我们在使用MCU的过程中最常见的问题之一。Kinetis系列微控制器具有复

    前天
  • MCS-51单片机的布尔处理机功能

    布尔处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的。布尔变量也即开关变量,它是以位(bit)为单位进行操作的。在物理结构上,MCS

    前天
  • 时钟周期及单片机定时器初值计算

    先说说什么是时钟周期?什么是机器周期?什么是指令周期?时钟周期时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例

    前天
  • 嵌入式USB主设备的应用

    USB已经成为设备和PC之间通信的标准方式,从通用设备(如闪存设备和鼠标)到专用设备,该标准几乎完全替代了其他的串行通信协议。USB外围设备彼此之间不能相互通信

    12-06
  • Linux 与 win操作系统的几种分区格式

    win常用的分区格式有三种,分别是FAT16、FAT32、NTFS格式。在Linux操作系统里有Ext2、Ext3、Linuxswap和VFAT四种格式。FAT

    12-06
  • ARM 函数是怎么传入参数的

    这篇文章简要说说函数是怎么传入参数的,我们都知道,当一个函数调用使用少量参数(ARM上是少于等于4个)时,参数是通过寄存器进行传值(ARM上是通过r0,r1,r

    12-06
  • ARM64启动过程中

    作者:linuxer一、前言本文主要描述了ARM64启动过程中,如何建立初始化阶段页表的过程。我们知道,从bootloader到kernel的时候,MMU是of

    12-06
下载排行榜
更多
广告