首 页电子文章电子资料客户留言94论坛繁體中文
设为首页
加入收藏
联系我们
您当前的位置:中国电子前沿 -> ARM技术 -> ARM入门 -> 电子文章内容 退出登录 用户管理
栏目导航
· ARM入门 · ARM系统
· ARM应用
热门电子文章
· [linux移植] 如何监控和保..
· [linux移植] Linux解释器..
· [linux移植] 在Redhat Li..
· [CPLD应用] CPLD器件在时..
· [VHDL学习] 错误检测与纠..
· [VHDL学习] 在PLD开发中提..
· [VXwork移植] BSP配置文件..
· [linux移植] Redhat9+Apa..
· [linux移植] 升级、编译自..
· [linux移植] Gentoo 2005..
· [linux移植] Gentoo下的多..
· [linux移植] icewm+rox-f..
相关电子文章
· 致 ARM 初学者!!
· arm学习
· ARM的应用和选型
· ARM开发的调试方法概..
· ARM体系结构发展-
· ARTX菜鸟外部中断笔..
· ARM菜鸟心中的中断防..
· ARM Boot 示例
· ARM体系结构和编程学..
· ARM体系结构与编程 ..
[ARM技术]ARM基础知识连载之五(转贴)
作者:佚名  来源:不详  发布时间:2006-9-11 14:20:13  发布人:zangyl

减小字体 增大字体

在应用程序中安装异常中断处理程序
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)

[] [返回上一页] [打 印] [收 藏]
∷相关电子文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
关于本站网站帮助广告合作下载声明友情连接网站地图
Copyright © 2002-2006 EMB-CN.com. All Rights Reserved .