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

📄 init.s

📁 ARM嵌入式应用开发典型实例配书光盘ARM嵌入式应用开发实例生物识别项目.rar
💻 S
字号:
	AREA Init,CODE,READONLY

;Pre-defined constants
USERMODE EQU 0x10
FIQMODE EQU 0x11
IRQMODE EQU 0x12
SVCMODE EQU 0x13
ABORTMODE EQU 0x17
UNDEFMODE EQU 0x1b
MODEMASK EQU 0x1f
NOINT EQU 0xc0
HAVEINT	EQU	0x00

GPIO_AFG	 	EQU		0xFFF83000			;/* configuration Register */
GPIO_DIR	 	EQU		0xFFF83004 			;/* direction Register */
GPIO_DATAOUT 	EQU		0xFFF83008 			;/* GPIO data output Register */
GPIO_DATAIN  	EQU		0xFFF8300C		 	;/* GPIO data input Register */
DEBNCE_CTRL    	EQU		0xFFF83010			;/* debounce control Register */



	KEEP

	ENTRY
	EXPORT	Reset_Handler
    ;****************************************************
    ;*	Initialize stacks				* 
    ;****************************************************
Reset_Handler

    mrs	    r0,cpsr
    bic	    r0,r0,#MODEMASK
    orr	    r1,r0,#UNDEFMODE|NOINT
    msr	    cpsr_cxsf,r1			;UndefMode
    ldr	    sp,=UndefStack
	
    orr	    r1,r0,#ABORTMODE|NOINT
    msr	    cpsr_cxsf,r1 	    	;AbortMode
    ldr	    sp,=AbortStack

    orr	    r1,r0,#IRQMODE|NOINT
    msr	    cpsr_cxsf,r1 	    	;IRQMode
    ldr	    sp,=IRQStack
	
    orr	    r1,r0,#FIQMODE|NOINT
    msr	    cpsr_cxsf,r1 	    	;FIQMode
    ldr	    sp,=FIQStack

    orr	    r1,r0,#SVCMODE|NOINT
    msr	    cpsr_cxsf,r1 	    	;SVCMode
    ldr	    sp,=SVCStack

    ;********************************************************
    ;*	Copy and paste RW data/zero initialized data	    *
    ;********************************************************
    orr	    r1,r0,#USERMODE
    bic     r1,r1,#0xc0
    
    
    msr	    cpsr_cxsf,r1 	    	;SVCMode
    ldr	    sp,=UserStack



    ;********************************************************
    ;*	Copy and paste RW data/zero initialized data	    *
    ;********************************************************
	IMPORT |Image$$RO$$Limit| 	; End of ROM code
	IMPORT |Image$$RW$$Base| 	; Base of RAM to initialise
	IMPORT |Image$$ZI$$Base| 	; Base and limit of area
	IMPORT |Image$$ZI$$Limit| 	; to zero initialise
	
	IMPORT main 			; The main entry of mon program

    LDR	    r0, =|Image$$RO$$Limit|	; pointer to ROM data
    LDR	    r1, =|Image$$RW$$Base|	;            RAM copy
    LDR	    r3, =|Image$$ZI$$Base|	
	;Zero init base => top of initialised data
			
    CMP	    r0, r1	    ; Check that they are different
    BEQ	    %F1
0		
    CMP	    r1, r3	    ; Copy init data
    LDRCC   r2, [r0], #4    ;--> LDRCC r2, [r0] + ADD r0, r0, #4		 
    STRCC   r2, [r1], #4    ;--> STRCC r2, [r1] + ADD r1, r1, #4
    BCC	    %B0
1		
    LDR	    r1, =|Image$$ZI$$Limit| ; Top of zero init segment
    MOV	    r2, #0
2		
    CMP	    r3, r1	    ; Zero init
    STRCC   r2, [r3], #4
    BCC	    %B2


	BL	main	    ; jump to C program
	B	.						
	
	
	ALIGN

	AREA RamData, DATA, READWRITE
	

	^	(0x400000-0x600)	;
				
UserStack	#	256	;c1(c7)ffa00
SVCStack	#	256	;c1(c7)ffb00
UndefStack	#	256	;c1(c7)ffc00
AbortStack	#	256	;c1(c7)ffd00
IRQStack	#	256	;c1(c7)ffe00
FIQStack	#	0	;c1(c7)fff00

	END

;+++++++++++++++++++++++++++++++++++++++++++++++++=
;   	LDR		r0, =GPIO_AFG
;   	LDR		r1, =0x00000014
;	STR		r1, [r0]			
					;//enable uart port ,others is GPIO
    
;   	LDR		r0, =GPIO_DIR
;   	LDR		r1, =0xffe33ffe
;	STR		r1, [r0]			

;   	LDR		r0, =DEBNCE_CTRL
;   	LDR		r1, =0
;	STR		r1, [r0]		
 					;//disable debug mode

;   	LDR		r0, =GPIO_DATAOUT
;1234 
;  	LDR		r1, =0
;	STR		r1, [r0]			

;  	LDR		r1, =0xFFFFFFFF
;	STR		r1, [r0]			

;	B		%1234
;+++++++++++++++++++++++++++++++++++++++++++++++++=

;	IMPORT	__main
;	B	__main	    ; jump to C program

⌨️ 快捷键说明

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