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

📄 norflash_bootloader.s

📁 223.rar
💻 S
字号:
;********************************************************************************************
;*filename:			boot.s						
;*author:			WUER xiao 
;*create date:		2008-6-17 9:25                                                                      
;*description:	    This file is used for 16 bit NOR FLASH bootloader                                                              
;*modify history:	                                                                      
;*misc:           
;********************************************************************************************
PMU_PLTR        EQU      0x10001000       ; PLL的稳定过渡时间
PMU_PMCR        EQU      0x10001004       ; 系统主时钟PLL的控制寄存器
PMU_PUCR        EQU      0x10001008       ; USB时钟PLL的控制寄存器
PMU_PCSR        EQU      0x1000100C       ; 内部模块时钟源供给的控制寄存器
PMU_PDSLOW      EQU      0x10001010       ; SLOW状态下时钟的分频因子
PMU_PMDR        EQU      0x10001014       ; 芯片工作模式寄存器
PMU_RCTR        EQU      0x10001018       ; Reset控制寄存器
PMU_CLRWAKUP    EQU      0x1000101C       ; WakeUp清除寄存器
	
EMI_CSACONF     EQU      0x11000000       ; CSA参数配置寄存器
EMI_CSECONF     EQU      0x11000010       ; CSE参数配置寄存器
EMI_CSFCONF     EQU      0x11000014       ; CSF参数配置寄存器
EMI_SDCONF1     EQU      0x11000018       ; SDRAM时序配置寄存器1
EMI_SDCONF2     EQU      0x1100001C       ; SDRAM时序配置寄存器2, SDRAM初始化用到的配置信息
EMI_REMAPCONF   EQU      0x11000020       ; 片选空间及地址映射REMAP配置寄存器


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

;************************************************************************************
; 	init the PMU and get the memory space;
;	关于功耗管理模块的实现机制在后续版本可能会作出调整, 使其层次化更加清晰,封装性更好
;************************************************************************************
    ldr    r4,    =PMU_PCSR         ; 打开所有模块时钟
    ldr    r5,    =0x0001FFFF       ; 由低位到高位依次(一共11bit有效)表示:esram lcdc pmu dmac emi mac adc ssi uart2 uart1 uart0       
    str    r5,    [ r4 ] 

    ldr    r4,    =PMU_PMDR         ; 由SLOW模式进入NORMAL模式
    ldr    r5,    =0x00000001       ; 00:slow,01:normal,10:sleep,11:idle         
    str    r5,    [ r4 ] 
    
    ldr    r4,    =PMU_PLTR         ; 配置PLL稳定过度时间为保守值50us.
    ldr    r5,    =0x0FFA0FFA       ; 其实,低16bit reserved
    str    r5,    [ r4 ] 
    
    ;//PLL控制寄存器配置有待进一步确认,Fout=Fi*PV/(PD+1),但是Fi=?
    ldr    r4,    =PMU_PMCR         ; 配置系统时钟为80MHz       
    ldr    r5,    =0x0000c00c      ;7A8--40M          788 -- 16M     c008-64m
    str    r5,    [ r4 ] 
    
    ;//PLL控制寄存器配置有待进一步确认,Fout=Fi*PV/(PD+1),但是Fi=?
    ;ldr    r4,    =PMU_PMCR         ; 配置系统时钟为80MHz
    ;ldr    r5,    =0x00008788       ;7A8          
    ;str    r5,    [ r4 ] 
    
    
    
;****************************************************************
; 	init the EMI and get the memory space
;****************************************************************
	
	
    ldr    r4,    =EMI_CSACONF      ; CSA片选时序参数配置
    ldr    r5,    =0x08a6a6a1                 
    str    r5,    [ r4 ]     
 
    ldr    r4,    =EMI_CSECONF      ; CSE片选时序参数配置
    ldr    r5,    =0x8ca6a6a1                 
    str    r5,    [ r4 ]
 
    ldr    r4,    =EMI_SDCONF1 	    ; SDRAM参数配置1
    ldr    r5,    =0x1d004177       ; 0x1d004177 0x1d204177 0x0400800b       
    str    r5,    [ r4 ] 

    ldr    r4,    =EMI_SDCONF2 	    ; SDRAM参数配置2
    ldr    r5,    =0x80002860       ; 0x80001860 0x80002860  0x80001860      
    str    r5,    [ r4 ]

    ;ldr    r4,    =EMI_REMAPCONF   	; 重映射cse到0地址,之前0x0地址是默认的CSA(NorFlash),SDRAM地址也是AXD Debugger中手动设置的
    ;ldr    r5,    =0x0000000b       ;0x8000000b  0x80000003        
    ;str    r5,    [ r4 ]
    
    
    
	
;拷贝kernel代码到SDram

	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,	#0x44000 
	bne  LOOP    
	
	
;remap操作	
	ldr 	pc, =0x20000088
	
	mov		r0, r0
	mov		r0, r0
	mov		r0, r0 
	mov		r0, r0



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


	ldr		r1, =0x4000000    				;REMAP 0 ADDRESS TO SDRAM
	ldr		r2, =0x1234    	
	str		r2, [r1] 

	
;重新设定PC,开始操作系统启动
	ldr 	pc, =0x0

DEAD
	b DEAD
	
	END

⌨️ 快捷键说明

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