基于ARM的硬件启动程序设计-分配中断向量表
当中断发生后,ARM处理器会强制把PC指针指向中断向量表中对应的终端类型的地址处。
中断向量表的程序设计如下:
CODE32
AREA Startup,CODE,READONLY
; /* 异常向量表 */
Vectors
LDR PC, ResetAddr ;把ResetAdde地址上的存储器的内容装载到PC上
LDR PC, UndefinedAddr
LDR PC, SWI_Addr
LDR PC, PrefetchAddr
LDR PC, DataAbortAddr
DCD 0
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
ResetAddr DCD ResetInit;为ResetAddr分配以ResetInit地址值,
UndefinedAddr DCD Undefined
SWI_Addr DCD SoftwareInterrupt
PrefetchAddr DCD PrefetchAbort
DataAbortAddr DCD DataAbort
Nouse DCD 0
IRQ_Addr DCD IRQ_Exception
FIQ_Addr DCD FIQ_Handler
对ResetAddr而言,此时ResetAddr实质上只作为一个指针(指向ResetInit),没有分配空间,ResetAddr地址的存储器上装载的是ResetInit的地址。
ResetInit
BL InitStack ; 初始化堆栈
BL TargetBusInit ; 总线系统初始化 (函数中不允许堆栈操作)
BLTargetResetInit; 针对目标板的系统初始化
以ResetInit为例,存储器空间分配如下所示:
注意中断向量表要存放在代码段startup的开始处(Entry开始),而程序被链接时,该startup代码段被链接在整个程序的入口地址。
ARM硬件启动中断向量 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)