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

📄 init.s

📁 基于S3C4510B的应用程序开发
💻 S
字号:

   AREA    Init, CODE, READONLY
		CODE32
		GET snds.s		
        ENTRY
    
    LDR PC, =ResetInit
    LDR PC, =Undefine
    LDR PC, =SWI_handler
    LDR PC, =Pretch_handler
    LDR PC, =Data_Pretch
    LDR PC, =Reserved
    LDR PC, =IRQ_Handler
    LDR PC, =FIQ_Handler
    
 
 
  IMPORT    main
  ;IMPORT    IRQ_wait
  
Undefine 
     
     BL Undefine
   
    
SWI_handler     ; SVC模式 
         
     STMFD   SP!, {R0-R12, LR}  
      
     MRS     R0, SPSR    
     STMFD   SP!, {R0}
       
     ;BL   main

     LDMFD   SP!, {R0}
     MSR     SPSR_cxsf, R0
     LDMFD   SP!, {R0-R12, LR}
     SUBS    PC, LR, #4   
     
           
Pretch_handler
    B     Pretch_handler
    
Data_Pretch
    B     Data_Pretch
    
Reserved
    B     Reserved
    
IRQ_Handler 
    
      STMFD   SP!, {R0-R12, LR}     
      MRS     R9,  SPSR    
      STMFD   SP!, {R9} 
           
     ; BL IRQ_wait
              
      LDMFD   SP!, {R9}
      LDMFD   SP!, {R0-R12, LR}      
      MSR     CPSR_cxsf, R9   
      ;MOV  PC, LR
      ;LDMFD sp!,{r0-r12,pc}
      MOV  PC, LR
    
FIQ_Handler
     B      FIQ_Handler
    
InitStack    
        MOV     R0, LR

;Build the SVC stack
;设置管理模式堆栈
        MSR     CPSR_c, #0xd3		
        ;LDR     SP, StackSvc
        LDR      SP, =0x810000
;Build the IRQ stack			
;设置中断模式堆栈
        MSR     CPSR_c, #0x52
        ;LDR     SP, StackIrq
        LDR      SP, =0x810000
;Build the FIQ stack
;设置快速中断模式堆栈
        MSR     CPSR_c, #0xd1
        ;LDR     SP, StackFiq
        LDR      SP, =0x830000
;Build the DATAABORT stack
;设置中止模式堆栈
        MSR     CPSR_c, #0xd7
        ;LDR     SP, StackAbt
        LDR     SP, =0x840000
;Build the UDF stack
;设置未定义模式堆栈
        MSR     CPSR_c, #0xdb
        ;LDR     SP, StackUnd
        LDR      SP, =0x850000
        
;Build the SYS stack
;设置系统模式堆栈
        ;MSR     CPSR_c, #0xdf
        MSR      CPSR_c, #0x10
        ;LDR     SP, StackUsr
        LDR      SP, =0x860000
; Bulid the use stack
; 设置用户模式
        MSR     CPSR_c, #0x10		
        ;LDR     SP, StackSvc
        LDR      SP, =0x800000
        
        MOV     PC, R0

ResetInit
 
    MRS	r0, cpsr
	BIC	r0, r0, #MASK_MODE
	ORR	r0, r0, #MODE_SVC32
	;ORR r0, r0, #I_BIT
	;ORR r0, r0, #F_BIT
	MSR	cpsr_c, r0

    LDR   r0, =ARM7_INTMASK
    LDR   r1, =0x3FFFFF
    STR   r1, [r0]
    
	LDR   r0, =ARM7_SYSCFG                       ;
    LDR   r1, =0xE7FFFF80                      ;SYSCFG的初始值(根据实际需要设置SYSCFG的值)
    STR   r1, [r0]
;part2
	LDR	r1, =rEXTDBWTH 				;EXTDBWTH          		
	LDR	r2, =rROMCON0  				;ROMCON0	@ 0M ~ 2M	
	LDR	r3, =rROMCON1				;ROMCON1	@ DISABLED
	LDR	r4, =rROMCON2				;ROMCON1	@ DISABLED
	LDR	r5, =rROMCON3				;ROMCON1	@ DISABLED
	LDR	r6, =rROMCON4				;ROMCON1	@ DISABLED
	LDR	r7, =rROMCON5				;ROMCON1	@ DISABLED
	LDR	r8, =rSDRAMCON0				;SDRAMCON0 	@ 2M ~ 18M
	LDR	r9, =rSDRAMCON1				;SDRAMCON1 	@ DISABLED
	LDR	r10,=rSDRAMCON2				;SDRAMCON2 	@ DISABLED
	LDR	r11,=rSDRAMCON3				;SDRAMCON3 	@ DISABLED
	LDR	r12,=rSREFEXTCON			
	
	LDR	r0, =ARM7_EXTDBWTH 			
	STMIA	r0, {r1-r12}


	
;part3

	 IMPORT |Image$$RO$$Base|    
	 IMPORT |Image$$RO$$Limit|   
	 IMPORT |Image$$RW$$Base|   
	 IMPORT |Image$$RW$$Limit| 	
	 IMPORT |Image$$ZI$$Base| 	
	 IMPORT |Image$$ZI$$Limit| 
	
	;***************************************************************
;Self copy from FLASH to SDRAM

	LDR		r0, =|Image$$RO$$Base|      
	LDR		r1, =|Image$$RO$$Limit|      
	LDR		r2, =|Image$$RW$$Base|      
	LDR		r3, =|Image$$RW$$Limit|     

	;SUB 	r1, r1, r0
	;SUB		r3, r3, r2
	;ADD		r1, r1, r3
	MOV   r1, #0x200000
	
	LDR		r2, =0x200000   ;@2M
    ;ADD     r2,r2,r0             ;确保从重新映象后的数据是完全一致的
	
COPY
	LDR		r3, [r0], #4
	STR		r3, [r2], #4
	SUBS	r1, r1,   #4
	BNE		COPY

    LDR	r1, =rEXTDBWTH_R 			;EXTDBWTH          		
	LDR	r2, =rROMCON0_R  			;ROMCON0	@ 16M ~ 18M	
	LDR	r3, =rROMCON1_R				;ROMCON1	@ DISABLED
	LDR	r4, =rROMCON2_R				;ROMCON2	@ DISABLED
	LDR	r5, =rROMCON3_R				;ROMCON3	@ DISABLED
	LDR	r6, =rROMCON4_R				;ROMCON4	@ DISABLED
	LDR	r7, =rROMCON5_R				;ROMCON4	@ DISABLED
	LDR	r8, =rSDRAMCON0_R			;SDRAMCON0 	@ 0M ~ 16M
	LDR	r9, =rSDRAMCON1_R			;SDRAMCON1 	@ DISABLED
	LDR	r10,=rSDRAMCON2_R			;SDRAMCON2 	@ DISABLED
	LDR	r11,=rSDRAMCON3_R			;SDRAMCON3 	@ DISABLED
	LDR	r12,=rSREFEXTCON_R			

	LDR	r0, =ARM7_EXTDBWTH 			
	STMIA	r0, {r1-r12}
	
   ; 设置串口中断 IRQ接收中断
   
	BL InitStack
	
	;LDR   r0, =ARM7_INTMODE
    ;LDR   r1, =0x0
    ;STR   r1, [r0]
    
    ;LDR   r0, =ARM7_INTMASK
    ;LDR   r1, =0x1FFFDF
    ;STR   r1, [r0]

	;LDR		PC, = hm_monitor
	LDR PC, =main
	
	

    
     END

⌨️ 快捷键说明

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