您当前的位置:五五电子网电子知识单片机-工控设备源码-程序ARM启动代码研究(附源代码) 正文
ARM启动代码研究(附源代码)

ARM启动代码研究(附源代码)

点击数:7935 次   录入时间:03-04 12:03:42   整理:http://www.55dianzi.com   源码-程序
                                               ;//从第5位开始写入0111
                                                             ;//从11位开始写入0111(0x07)/11111(0x1f) 
    IMPORT __use_no_sEMIhosting_swi

;The imported labels
;引入的外部标号在这声明
    IMPORT  FIQ_Exception                   ;Fast interrupt exceptions handler 快速中断异常处理程序
    IMPORT  __main                          ;The entry point to the main function C语言主程序入口 
    IMPORT  TargetResetInit                 ;initialize the target board 目标板基本初始化

;The emported labels
;给外部使用的标号在这声明
    EXPORT  bottom_of_heap
    EXPORT  StackUsr
    
    EXPORT  Reset
    EXPORT __user_initial_stackheap

    CODE32

    AREA    vectors,CODE,READONLY
        ENTRY

;interrupt vectors
;中断向量表
Reset
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, [PC, #-0xff0]
        LDR     PC, FIQ_Addr

ResetAddr           DCD     ResetInit
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0
IRQ_Addr            DCD     0
FIQ_Addr            DCD     FIQ_Handler

;未定义指令
Undefined
        B       Undefined

;软中断
SoftwareInterrupt   
        B       SoftwareInterrupt 

;取指令中止
PrefetchAbort
        B       PrefetchAbort

;取数据中止
DataAbort
        B       DataAbort

;快速中断
FIQ_Handler
        STMFD   SP!, {R0-R3, LR}
        BL      FIQ_Exception
        LDMFD   SP!, {R0-R3, LR}
        SUBS    PC,  LR,  #4
        
;/*********************************************************************************************************
;** unction name  函数名称:  InitStack
;** Descriptions  功能描述:  Initialize the stacks  初始化堆栈
;** input parameters  输 入:    None 无
;** Returned value    输 出 :   None 无
;** Used global variables 全局变量:  None 无
;** Calling modules  调用模块:  None 无
;** 
;** Created by   作 者:  Chenmingji 陈明计
;** Created Date  日 期:  2004/02/02 2004年2月2日
;**-------------------------------------------------------------------------------------------------------
;** Modified by  修 改: 
;** Modified date  日 期: 
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
InitStack    
        MOV     R0, LR
;Build the SVC stack
;设置管理模式堆栈
        MSR     CPSR_c, #0xd3  
        LDR     SP, StackSvc 
;Build the IRQ stack 
;设置中断模式堆栈
        MSR     CPSR_c, #0xd2
        LDR     SP, StackIrq
;Build the FIQ stack
;设置快速中断模式堆栈
        MSR     CPSR_c, #0xd1
        LDR     SP, StackFiq
;Build the DATAABORT stack
;设置中止模式堆栈
        MSR     CPSR_c, #0xd7
        LDR     SP, StackAbt
;Build the UDF stack
;设置未定义模式堆栈
        MSR     CPSR_c, #0xdb
        LDR     SP, StackUnd
;Build the SYS stack
;设置系统模式堆栈
        MSR     CPSR_c, #0x5f                  ;#0xdf
        LDR     SP, =StackUsr

        MOV     PC, R0

;/*********************************************************************************************************
;** unction name  函数名称:  ResetInit
;** Descriptions  功能描述:  RESET  复位入口
;** input parameters  输 入:    None 无
;** Returned value    输 出 :   None 无
;** Used global variables 全局变量:  None 无
;** Calling modules  调用模块:  None 无

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:源代码  源码-程序单片机-工控设备 - 源码-程序

《ARM启动代码研究(附源代码)》相关文章>>>