×
单片机 > 单片机程序设计 > 详情

基于ARM的硬件启动程序设计-分配中断向量表

发布时间:2020-06-05 发布时间:
|
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           ; 总线系统初始化 (函数中不允许堆栈操作)
   BL  TargetResetInit   ; 针对目标板的系统初始化  

以ResetInit为例,存储器空间分配如下所示:

注意中断向量表要存放在代码段startup的开始处(Entry开始),而程序被链接时,该startup代码段被链接在整个程序的入口地址。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
LPC4350的功能特性和应用分析