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

📄 init.s

📁 三星4510 BOOTLOADER全部源代码
💻 S
字号:
;************************************************************************************************
;Institute of automation, Chinese Academy of Sciences
;SWUST
;File Name:		Init.s
;Description:		Init
;Author:			Lee Li
;Date:			2005-6-1
;SDRAM Configuration:	Use ljg.txt,SDRAM remap to address 0x0~0x100,0000(16MB) 
;************************************************************************************************	
	



	GET	mem.a
	GET	casia1.a

	CODE32
	AREA    Init,CODE,READONLY
	
	ENTRY 
	B       Reset_Handler		
        	NOP 	
	NOP        
        	NOP       
        	NOP       
	NOP 
        	NOP       
        	NOP

	
;**********************************************************	
;Memory Remap
;**********************************************************
Reset_Handler
	LDR	R1,=0x3ff0000
	LDR	R0,=0xE7ffff90
        	STR	R0,[R1]

	LDR	r0, =0x3FF0000 + 0x3010
	LDR	r1, =rEXTDBWTH  
	LDR	r2, =rROMCON0    
	LDR	r3, =rROMCON1
	LDR	r4, =rROMCON2
	LDR	r5, =rROMCON3
	LDR	r6, =rROMCON4
	LDR	r7, =rROMCON5
	LDR	r8, =0x14010380
	LDR	r9, =rSDRAMCON1
	LDR	r10,=rSDRAMCON2
	LDR	r11,=rSDRAMCON3
	LDR	r12,=rSREFEXTCON
	STMIA	r0, {r1-r12}
	    
	ldr	r0, =0x0
	ldr	r1, =0x200000		
	ldr	r2, =0x400000

rom2ram_copy_loop				; Copy code from Flash to SDRAM.
	ldr	r3, [r0], #4
	str	r3, [r2], #4
	subs	r1, r1, #4
	bne	rom2ram_copy_loop
        

	LDR	r0, =0x3FF0000 + 0x3010
	LDR	r1, =rEXTDBWTH  
	LDR	r2, =0x12040060   
	LDR	r3, =rROMCON1
	LDR	r4, =rROMCON2
	LDR	r5, =rROMCON3
	LDR	r6, =rROMCON4
	LDR	r7, =rROMCON5
	LDR	r8, =0x10000380
	LDR	r9, =rSDRAMCON1
	LDR	r10,=rSDRAMCON2
	LDR	r11,=rSDRAMCON3
	LDR	r12,=rSREFEXTCON
	STMIA	r0, {r1-r12}
	

;**********************************************************
        
;Chose the entry way from any-key-inputing of PC.
;1)Enter Bootloader(press any key)
;2)Enter the uClinux(wait nearly 8 second)
	
;**********************************************************
;UART0 SET
;**********************************************************

;ULCON0	EQU	0x3FFD000
;UCON0	EQU	0x3FFD004
;UTXBUF0	EQU	0x3FFD00C
;URXBUF0 EQU	0x3FFD010
;UBRDIV0	EQU	0x3FFD014
;USTAT0	EQU	0x3FFD008
;**********************************************************      



	LDR R0,=0x03
	LDR R1,=0x3FFD000
	STR R0,[R1]

	LDR R0,=0x0D
	LDR R1,=0x3FFD004
	STR R0,[R1]

         LDR R0,=0x500
         LDR R1,=0x3FFD014
         STR R0,[R1]

		         
         LDR R0,=sendstr
	LDR R1,=0x3FFD00C     ;set uart application
	


Send1	
	LDRB R4,[R0],#1     ;read the end sign in dcb area
	CMP R4,#0x00
	BEQ OVER
	STR R4,[R1]
	
WAIT	
	LDR R2,=0x3FFD008
	LDR R3,[R2]
	TST R3,#&40
	BEQ WAIT
	B  Send1 
	
	
OVER	

	LDR  R1,=0x3FFD008
	LDR  R0,[R1]
	AND  R0,R0,#0xBF
	STR  R0,[R1]     ;clear the sendbuf and sign
	
;*****************************************************************************	
;This section make a selection for boot way of bootloader or uClinux
;*****************************************************************************
	LDR  R5,=0x20 ;wait selection of uclinux for 8 time



	LDR R0,=0x00      ;Clear the recevbuf
	LDR R1,=0x3FFD0010
	STR R0,[R1] 
	
	
SELECTION
	LDR R0,=print
	LDR R1,=0x3FFD00C


Send2		
	LDRB R4,[R0],#1
	CMP  R4,#0
	BEQ  CHECK
	STR  R4,[R1]

WAIT1	LDR R2,=0x3FFD008
	LDR R3,[R2]
	TST R3,#&40
	BEQ WAIT1
	
	B   Send2
	

CHECK	LDR R1,=0x01FFFF ;Set the maxvalue of delay loop

LOOP	SUBS R1,R1,#1 
	BNE LOOP

	LDR R0,=0x3FFD010
	LDR R1,[R0]
	CMP R5,#0
	BEQ LAST
         SUBS R5,R5,#1
	CMP R1,#0x00
	BEQ SELECTION     ;get back to the selection waiting (26 time) 

;**********************************************************
;end of adding code 2005-6-1
;**********************************************************
		
         LDR  R0,=0x3FF5000      
	LDR  R1,=0xFF
	STR  R1,[R0]
	LDR  R0,=0x3FF5008
	LDR  R1,=0xFF
	STR  R1,[R0]
       	B    Next         ;enter the bootloader

LAST     LDR R0,=0x10000 
	MOV PC,R0          ;enter uClinux


Next
	
;********************************************************
;Initialise system stack for different processor modes
;;Change to Interrupt Mode (IRQ)
;********************************************************
	mov	r0, #0x12
	MSR	cpsr_c, r0
	mov 	sp,#0x70000
;********************************************************
;Change to Fast Interrupt Mode (FIQ)
;********************************************************
	mov	r0,#0x11
	MSR	cpsr_c, r0				
	mov 	sp,#0x7f000
;********************************************************
;Change to Supervisor Mode (SVC)
;********************************************************
        mov	r0,#0x13
	MSR	cpsr_c, r0				
	mov 	sp,#0x80000
	
;********************************************************
;Change to User Mode (USR)
;********************************************************
        mov	r0,#0x10
	MSR	cpsr_c, r0				
	mov 	sp,#0x83000	

;********************************************************
;Clear INTPEND Register
;********************************************************
        LDR	R1,=0x3FF4000
	MVN	R0,#0
        STR	R0,[R1]

;********************************************************
;External Timing Register
;********************************************************
	LDR	R0,=0x3FF300C
	LDR	R1,=0x0fffffff
	STR	R1,[R0]

	LDR	R0,=0x3FF3008
	LDR	R1,=0x0fffffff
	STR	R1,[R0]

;********************************************************
	IMPORT  	C_Entry
    	BL      	C_Entry
	B  	.	   


sendstr DCB &A,&D,"Press any key to Bootloader...",&A,&D,0
print   DCB ".",0


	END

⌨️ 快捷键说明

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