⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reset.s

📁 LPC2102的keil vendor code
💻 S
字号:
;/*****************************************************************************
;*   reset.s reset vector table for NXP LPC23xx/24xx Family Microprocessors
;*
;*   Copyright(C) 2006, NXP Semiconductor
;*   All rights reserved.
;*
;*   History
;*   2007.05.13  ver 1.00    Prelimnary version, first Release
;*
;****************************************************************************/
     PRESERVE8 ; preserve 8-byte stack for procedure call standard 

; define Modes and Interrupt flags to configure Progrm Status Register

USR_Mode        EQU     0x10
FIQ_Mode        EQU     0x11
IRQ_Mode        EQU     0x12
SVC_Mode        EQU     0x13
ABT_Mode        EQU     0x17
UND_Mode        EQU     0x1B
SYS_Mode        EQU     0x1F

I_Bit           EQU     0x80        ; disables IRQ  when true(1)
F_Bit           EQU     0x40        ; disables FIQ  when true(1)
No_INT          EQU     0xC0        ; disables FIQ  and IRQ

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        AREA    STACK, READWRITE, ALIGN=4

; define Heap & Stack sizes
	   EXPORT  Heap_Bottom
	   EXPORT  USR_Stack_Bottom
	   EXPORT  UND_Stack_Bottom
	   EXPORT  SVC_Stack_Bottom
	   EXPORT  ABT_Stack_Bottom
	   EXPORT  FIQ_Stack_Bottom
	   EXPORT  IRQ_Stack_Bottom

UND_Stack_Size  EQU     0x00000000	 
SVC_Stack_Size  EQU     0x00000100
ABT_Stack_Size  EQU     0x00000000
FIQ_Stack_Size  EQU     0x00000000
IRQ_Stack_Size  EQU     0x00000100
USR_Stack_Size  EQU     0x00000400
SYS_Stack_Size  EQU     0x00000000
Heap_Size       EQU     0x00000100

USR_Stack_Top 	  EQU     USR_Stack_Bottom + USR_Stack_Size
UND_Stack_Top 	  EQU     UND_Stack_Bottom + UND_Stack_Size
SVC_Stack_Top 	  EQU     SVC_Stack_Bottom + SVC_Stack_Size
ABT_Stack_Top 	  EQU     ABT_Stack_Bottom + ABT_Stack_Size
FIQ_Stack_Top 	  EQU     FIQ_Stack_Bottom + FIQ_Stack_Size
IRQ_Stack_Top 	  EQU     IRQ_Stack_Bottom + IRQ_Stack_Size
Heap_Top          EQU     Heap_Bottom + Heap_Size

  
UND_Stack_Bottom   SPACE  UND_Stack_Size
ABT_Stack_Bottom   SPACE  ABT_Stack_Size
FIQ_Stack_Bottom   SPACE  FIQ_Stack_Size

Heap_Bottom        SPACE  Heap_Size
USR_Stack_Bottom   SPACE  USR_Stack_Size
SVC_Stack_Bottom   SPACE  SVC_Stack_Size
IRQ_Stack_Bottom   SPACE  IRQ_Stack_Size

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Overlay List
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	AREA	overlay_list, DATA, READONLY

	; Linker-defined symbols to use
	
	IMPORT ||Load$$RW_IRAM1$$Base||
	IMPORT ||Load$$RW_IRAM2$$Base||

	IMPORT ||Image$$RW_IRAM1$$Base||
	IMPORT ||Image$$RW_IRAM1$$ZI$$Base||
	IMPORT ||Image$$RW_IRAM2$$ZI$$Base||

	IMPORT ||Image$$RW_IRAM1$$ZI$$Length||
	IMPORT ||Image$$RW_IRAM2$$ZI$$Length||

	; Symbols to export
	
	EXPORT data_base
	EXPORT overlay_regions

; Common base execution addresses of the two OVERLAY regions

data_base DCD ||Image$$RW_IRAM1$$Base||

; Array of details for each region -
; see overlay_manager.c for structure layout

overlay_regions
; overlay 1
	DCD ||Load$$RW_IRAM1$$Base||
	DCD ||Image$$RW_IRAM1$$ZI$$Base||
	DCD ||Image$$RW_IRAM1$$ZI$$Length||
	
; overlay 2	
	DCD ||Load$$RW_IRAM2$$Base||
	DCD ||Image$$RW_IRAM2$$ZI$$Base||
	DCD ||Image$$RW_IRAM2$$ZI$$Length||
  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Reset Handler
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        AREA    RESET, CODE, READONLY
        ARM		; ARM mode

;  This section must be first in scatterloading file at 0x00000000
;  Unused modes use infinite loop as Handler.
		 EXPORT Reset_Handler

VectorTable
        LDR     PC, Reset_Addr         
        LDR     PC, Undef_Addr
        LDR     PC, SWI_Addr
        LDR     PC, PAbt_Addr
        LDR     PC, DAbt_Addr
        NOP                            ; check sum for NXP parts 
        LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr
        LDR     PC, FIQ_Addr

Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
;                DCD     0                      ; Reserved Address 
;IRQ_Addr        DCD     IRQ_Handler
FIQ_Addr        DCD     FIQ_Handler

Undef_Handler   B       Undef_Handler
SWI_Handler     B       SWI_Handler
PAbt_Handler    B       PAbt_Handler
DAbt_Handler    B       DAbt_Handler
;IRQ_Handler     B       IRQ_Handler
FIQ_Handler     B       FIQ_Handler


Reset_Handler   

;  Set Stack Pointer  UND defined Mode
        MSR     CPSR_c, #UND_Mode|No_INT
        LDR     SP, UND_Stack_Top_Addr

;  Set Stack Pointer  ABT Abort Mode 
        MSR     CPSR_c, #ABT_Mode|No_INT
        LDR     SP, ABT_Stack_Top_Addr

;  Set Stack Pointer FIQ Mode 
        MSR     CPSR_c, #FIQ_Mode|No_INT
        LDR     SP, FIQ_Stack_Top_Addr

;  Set Stack Pointer IRQ Mode 
        MSR     CPSR_c, #IRQ_Mode|No_INT
        LDR     SP, IRQ_Stack_Top_Addr

;  Set Stack Pointer Supervisor Mode
        MSR     CPSR_c, #SVC_Mode|No_INT
        LDR     SP, SVC_Stack_Top_Addr

;  Enter User(SYS) Mode and set its Stack Pointer
        MSR     CPSR_c, #SYS_Mode
        LDR     SP, USR_Stack_Top_Addr

				
        IMPORT	TargetResetInit
        BL		TargetResetInit

; Enter the C code

        IMPORT  __main
        LDR     R0, =__main
        BX      R0

Heap_Bottom_Addr        DCD     Heap_Bottom
USR_Stack_Top_Addr      DCD     USR_Stack_Top
UND_Stack_Top_Addr      DCD     UND_Stack_Top
SVC_Stack_Top_Addr      DCD     SVC_Stack_Top
ABT_Stack_Top_Addr      DCD     ABT_Stack_Top
FIQ_Stack_Top_Addr      DCD     FIQ_Stack_Top
IRQ_Stack_Top_Addr      DCD     IRQ_Stack_Top

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Set Initial User Stack & Heap
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        AREA    |.text|, CODE, READONLY

; use one region model
        EXPORT  __user_initial_stackheap

__user_initial_stackheap

        LDR     R0, =Heap_Bottom
        LDR     R1, =USR_Stack_Top 
        BX      LR

                END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -