您的位置 首页 测评

根据ARM的硬件发动程序设计-分配中断向量表

ARM要求中断向量表必须防放置在从0x00000000地址开始的连续32字节的空间内。ARM9定义的中断向量在向量表中的地址如下面所示:当中断发生后…

ARM要求中止向量表有必要防放置在从0x00000000地址开端的接连32字节的空间内。ARM9界说的中止向量在向量表中的地址如下面所示:

当中止发生后,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代码段被链接在整个程序的进口地址。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/275632.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部