| 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 所有产品 | 留言 | 论坛 | 购买指南 | 网络协议 | 驱动设计 | 
您现在的位置: 21嵌入式控制研究室 >> ARM >> ARM入门 >> 文章正文 用户登录 新用户注册
ARM基础知识五        【字体:
ARM基础知识五
作者:佚名    文章来源:21control    点击数:    更新时间:2005-12-12
ARM基础知识五
作者:转载
在应用程序中安装异常中断处理程序
1.使用跳转指令:可以在异常中断对应异常向量表中特定位置放置一条跳转指令,直接跳转到该异常中断的处理程序。这种方法有一个缺点,即只能在32M空间范围内跳转。
2.使用数据读取指令LDR:使用数据读取指令LDR向程序计数器PC中直接赋值。这种方法分为两步:先将异常中断处理程序的绝对地址存放在存放在距离向量表4KB范围内的一个存储单元中;再使用数据读取指令LDR将该单元的内容读取到程序计数器PC中。

**在系统复位时安装异常中断处理程序**
1.地址0x00处为ROM的情况
  使用数据读取指令LDR示例如下所示:
  Vector_Init_Block
  LDR PC, Reset_Addr
  LDR PC, Undefined_Addr
  LDR PC, SW_Addr
  LDR PC, Prefeth_Addr
  LDR PC, Abort_Addr
  NOP
  LDR PC, IRQ_Addr
  LDR PC, FIQ_Addr

  Reset_Addr  DCD Start_Boot
  Undefined_Addr DCD Undefined_Handle
  SW_Addr  DCD SWI_Handle
  Prefeth_Addr  DCD Prefeth_Handle
  Abort_Addr  DCD Abort_Handle
   DCD 0
  IRQ_Addr  DCD IRQ_Handle
  FIQ_Addr  DCD FIQ_Handle
使用跳转指令的示例如下所示:
  Vector_Init_Block
  BL Reset_Handle
  BL DCD Undefined_Handle
  BL SWI_Handle
  BL Prefeth_Handle
  BL Abort_Handle
  NOP
  BL IRQ_Handle
  BL FIQ_Handle
2.地址0x00处为RAM的情况
地址0x00处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且,必须使用下面的代码巴中断向量表从ROM中复制到RAM中地址0x00开始处的存储空间中:
 
 MOV r8,#0
 ADR r9,Vector_Init_Block
 ;复制中断向量表(8字)
 LDMIA r9!,(r0-r7)
 STMIA r8!,(r0-r7)
 ;复制保存各中断处理函数地址的表(8字words)
 LDMIA r9!,(r0-r7)
 STMIA r8!,(r0-r7)

 
文章录入:flyongrass    责任编辑:flyongrass 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • ARM入门

  • 一个典型的嵌入式系统设计和…

  • 基于RTCORBA技术的嵌入式代理…

  • 基于ARM的海底大地电磁信号采…

  • 32位ARM嵌入式处理器的调试技…

  • ARM CPU S3C44B0X与C54X DSP…

  • 32位ARM嵌入式处理器的调试技…

  • ARM处理器及物理IP实现突破性…

  • 基于ARM的实时测控系统开发平…

  • 基于ARM核的AT75C220及其在指…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)