ARM基础知识连载之五(转贴)
来源:互联网 发布:怎么用js隐藏div 编辑:程序博客网 时间:2024/04/28 17:56
操作系统启动的时候就是这样子的:
在应用程序中安装异常中断处理程序
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)
- ARM基础知识连载之五(转贴)
- ARM基础知识连载
- ARM基础知识连载【整理 有删除】
- 遗传算法入门(连载之五)
- 神经网络入门(连载之五)
- 天凉好个秋(连载五)
- 神经网络入门(连载之五)
- 神经网络入门连载之五
- 神经网络入门(连载之五)
- 神经网络入门(连载之五)
- 神经网络入门(连载之五)
- Objective-C基础知识之(五):NSString
- Android基础知识(五)之网络编程
- C#基础知识之五
- 配套自测连载(五)
- Oracle知识点连载(五)
- ARM基础知识(一)
- ARM基础知识(一)
- 重置quick test professional 中的布局
- 李一男2003年在港湾给开发人员培训时的语录[很实用]
- 最优质的奶是本科生的奶
- 微软技术中心实习随笔
- 像访问Sql一样访问Excel
- ARM基础知识连载之五(转贴)
- 29章Integration 读书笔记
- 【JfaceTextFramework学习笔记之四】TextViewer实现原理简单分析
- flex 各组件对应的样式属性 上
- Javascript中的类操作
- 完美卸载Oracle
- 每-CPU 的变量
- 避免职场情绪崩溃
- 【JfaceTextFramework学习笔记之五】积累