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

📄 boot.s

📁 uboot底层驱动
💻 S
字号:
;********************************************************************************************
;*filename:			boot.s						
;*author:			WUER xiao 
;*create date:		2005-5-10 16:25                                                                      
;*description:	    This file is used for 16 bit NOR FLASH bootloader                                                              
;*modify history:	                                                                      
;*misc:           
;********************************************************************************************
F_Bit		EQU 	0x40
Mode_Svc	EQU	0x13
 import c_entry


	AREA BOOTLOADER, CODE, READONLY                                                     
	ENTRY                           ; Mark first instruction to execute 

;配置16位CSA Nor Flash

		                          
	ldr		r1, =0x11000000        ;THE ADD OF EMIADDR_SMCONF
	ldr		r2, =0xB91311FF        ;cm:8019的片选要使能 
	str		r2, [ r1 ]

	ldr		r1, =0x11000014        ;THE ADD OF EMIADDR_SMCONF1
	ldr		r2, =0x01004077	
	str		r2, [ r1 ]

	ldr		r1, =0x11000018        ;THE ADD OF EMIADDR_SMCONF2
	ldr		r2, =0x80018500
	str		r2, [ r1 ]

	
;配置工作频率为70MHz
	
	ldr		r1, =0x1000100c
	ldr		r2, =0x17fff
	str		r2,[r1]
	        	
	ldr		r1, =0x10001014
	ldr		r2, =0x1
	str		r2,[r1]
	        	
	ldr		r1, =0x10001000
	ldr		r2, =0x018000cd
	str		r2,[r1]
	        	
	ldr		r1, =0x10001004
	ldr		r2, =0X238
	str		r2,[r1]
	        	
	ldr		r1, =0x10001004
	ldr		r2, =0X1238
	str		r2,[r1]
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	ldr		r1, =0x1000b06c
	ldr		r2, =0x10
	str		r2,[r1]
	
	ldr		r1, =0x1000b068
	ldr		r2, =0x0
	str		r2,[r1]
	
	ldr		r1, =0x1000b07c
	ldr		r2, =0x0
	str		r2,[r1]
	
;拷贝kernel代码到SDram
;将kernel代码从FlashRom地址0x20001000搬到SDram地址0x30000000
	ldr		r3, =0x00000000
	ldr		r1, =0x30000000					;the address of SDRAM
	ldr		r2, =0x20001000					;the address of NorFlash
	
;LOOP	
;	ldrb		r4, [r2], #1
;	strb		r4, [r1], #1
		
;	add 		r3, r3, #1
;	cmp			r3,	#0x60000                  ;cm:0x30000为Kernal代码字节长度
;	bne  LOOP    
;搬运完工

LOOP	
	ldr		r4, [r2], #4
	str		r4, [r1], #4
		
	add 		r3, r3, #1
	cmp			r3,	#0x8000                  ;0xf000为Kernal代码字节长度,#0x3C00=0xf000/4
	bne  LOOP    
;搬运完工



  	 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ldr		r1, =0x1000b07c
	ldr		r2, =0xffffffff
	str		r2,[r1]
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	
;remap操作	
	;ldr 	pc, =0x30000020                   ;cm: modify pc point 
	
	mov		r0, r0
	mov		r0, r0
	mov		r0, r0
	mov		r0, r0



REMAP
	ldr		r1, =0x11000010    				;REMAP 0 ADDRESS TO SDRAM
	ldr		r2, =0x0000000b    	
	str		r2, [r1]  
	


	
	
	
;重新设定PC,开始操作系统启动
	ldr lr, =c_entry
	
; **********************************************************************
; * Enable the interrupt while staying in the supervisor mode
; **********************************************************************
	
	MOV	r0, #Mode_Svc:OR:F_Bit
	MSR	cpsr_c, r0
;	LDR r0, =|Image$$RO$$Base| 	
;	LDR r1, =|Image$$ZI$$Limit| 	

	MOV 	pc, lr
	
	ldr 	pc, =0x30000020
	
	mov		r0, r0
	mov		r0, r0
	mov		r0, r0
	mov		r0, r0

	
DEAD
	b DEAD
	
	END

⌨️ 快捷键说明

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