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

📄 44binit.s

📁 ARM7(s3c44b0)开发平台LCD驱动程序
💻 S
📖 第 1 页 / 共 2 页
字号:
;/*
;************************************************************************************************************
;**                                          初始化应用程序执行环境                                        **
;************************************************************************************************************
;*/
    
    LDR	    r0, =|Image$$RO$$Limit|				      ;//输入ROM区中的RW地址(即:存储RO代码最后地址的下一地址)
    LDR	    r1, =|Image$$RW$$Base|				                                           ;//RAM区的开始地址
    LDR	    r3, =|Image$$ZI$$Base|				                                      ;//零初始化区的开始地址
			
    CMP	    r0, r1	    						                                         ;//比较地址是否相同?
    BEQ	    %F1
0		
    CMP	    r1, r3	    						                                         ;//比较地址是否相同?
    LDRCC   r2, [r0], #4    					                       ;//把ROM区中的RW地址中的数据放入寄存器		 
    STRCC   r2, [r1], #4    					 ;//把寄存器中的数据放入RAM区中,放完后,刚好到达ZI区的首地址
    BCC	    %B0
1		
    LDR	    r1, =|Image$$ZI$$Limit| 			                              ;//零初始化区的末地址的下一地址
    MOV	    r2, #0
2		
    CMP	    r3, r1	    						                                  ;//对零初始化区进行零初始化
    STRCC   r2, [r3], #4
    BCC	    %B2

;/*
;************************************************************************************************************
;**                                              呼叫主应用程序                                            **
;************************************************************************************************************
;*/
    
    b       Main
     
;/*
;************************************************************************************************************
;**                                          堆栈初始化应用程序                                            **
;************************************************************************************************************
;*/    
InitStacks    
    MOV     R0, LR
																			      		;//设置管理模式堆栈
    MSR     CPSR_c, # SVCMODE | NOINT
    LDR     SP, =StackSvc
												                                          ;//设置中断模式堆栈
    MSR     CPSR_c, #IRQMODE | NOINT
    LDR     SP, =StackIrq
												                                      ;//设置快速中断模式堆栈
    MSR     CPSR_c, #FIQMODE | NOINT
    LDR     SP, =StackFiq
												                                          ;//设置中止模式堆栈
    MSR     CPSR_c, #ABORTMODE | NOINT
    LDR     SP, =StackAbt
												                                        ;//设置未定义模式堆栈
    MSR     CPSR_c, #UNDEFMODE | NOINT
    LDR     SP, =StackUnd
												                                          ;//设置系统模式堆栈
    MSR     CPSR_c, #SYSMODE | NOINT 			                                            ;//在此不能开中断
    LDR     SP, =StackUsr
   
    MSR     CPSR_c, #SVCMODE| NOINT				                                                   ;//开中断
    MOV     PC, R0  
    
    LTORG  

;/************************************ 切换到系统模式下启动中断 ********************************************/
            
    EXPORT  StartInterrupt
StartInterrupt    
    MSR     CPSR_c, #SVCMODE 
    MOV  	PC, LR
	
;/*
;************************************************************************************************************
;**                                          该函数输入掉电模式                                            **
;************************************************************************************************************
;*/
;//void EnterPWDN(int CLKCON);

EnterPWDN
    mov	    r2,r0               													             ;//r0=CLKCON
    ldr	    r0,=REFRESH		
    ldr	    r3,[r0]
    mov	    r1, r3
    orr	    r1, r1, #0x400000   				                                                ;//打开自更新
    str	    r1, [r0]

    nop     					   				                             ;//等待直到自更新开始. 也许不需要。
    nop     					
    nop	    					
    nop
    nop
    nop
    nop
	
	;//输入 POWERDN 模式
    ldr	    r0,=CLKCON
    str	    r2,[r0]
	
	;//等待,直到进入SL_IDLE,STOP 模式,直到唤醒
    mov	    r0,#0xff
0   subs    r0,r0,#1
    bne	    %B0
	
	;//从DRAM/SDRAM 自更新模式中退出。
    ldr	    r0,=REFRESH
    str	    r3,[r0]
    mov	    pc,lr

    LTORG

;/*
;************************************************************************************************************
;** 				                       存储器配置应优化以利于性能发挥                                  **
;************************************************************************************************************

;*** 存储器访问周期参数的设定基则 ***
	; 1) Even FP-DRAM, EDO setting has more late fetch point by half-clock
	; 2) FP-DRAM Parameters:tRCD=3 for tRAC, tcas=2 for pad delay, tcp=2 for bus load.
	; 3) DRAM refresh rate is for 40Mhz. 
	; 4) The memory settings,here, are made the safe parameters even at 66Mhz.
;*/
SMRDATA DATA
;//bank0	16bit BOOT ROM SST39VF160/SST39VF320
;//bank1	16bit USB1.1 PDIUSBD12
;//bank2	8bit Nand Flash K9F2808U0A/K9F5608U0A
;//bank3	RTL8019
;//bank4	No Uesed
;//bank5	No Uesed
;//bank6	16bit SDRAM
;//bank7	16bit SDRAM
    [ BUSWIDTH=16
		DCD  0x11001002	 ; //Bank0   =  16bit BootFlash SST39VF160/SST39VF320) 
;//            ||||||||-	 Bank1   =  8bit PDIUSBD12
;//            ||||||---	 Bank2   =  8bit Nand Flash
;//            |||||----	 Bank3   =  16bit RTL8019
;//            ||||-----	 Bank4~5 =  8bit No Uesd
;//            ||--------	 Bank6~7 =  16bit SDRAM
    | 					;//BUSWIDTH=32
		DCD 0x22222220	;Bank0=OM[1:0], Bank1~Bank7=32bit
    ]
	DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))	;//GCS0
	DCD ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))	;//GCS1 
	DCD ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))	;//GCS2
	DCD ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))	;//GCS3
	DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))	;//GCS4
	DCD ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))	;//GCS5
	[ BDRAMTYPE="DRAM" 
	    DCD ((B6_MT<<15)+(B6_Trcd<<4)+(B6_Tcas<<3)+(B6_Tcp<<2)+(B6_CAN))	;//GCS6 check the MT value in parameter.a
	    DCD ((B7_MT<<15)+(B7_Trcd<<4)+(B7_Tcas<<3)+(B7_Tcp<<2)+(B7_CAN))	;//GCS7
	| 																		;//"SDRAM"
		DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))							;//GCS6
		DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))							;//GCS7
	]
	DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)	;//REFRESH RFEN=1, TREFMD=0, trp=3clk, trc=5clk, tchr=3clk,count=1113
	DCD 0x10			;//SCLK power down mode, BANKSIZE 32M/32M
	DCD 0x20			;//MRSR6 CL=2clk
	DCD 0x20			;//MRSR7

	ALIGN
;/*
;************************************************************************************************************
;** 				                     数据区分配各模式的堆栈空间                                        **
;************************************************************************************************************
*/
	
	AREA RamData, DATA, READWRITE

	^	(_ISR_STARTADDRESS-0x500)
				
StackUsr	#	256				                                                               ;//0x0C7ffa00
StackSvc	#	256				                                                               ;//0x0C7ffb00
StackUnd	#	256				                                                               ;//0x0C7ffc00
StackAbt	#	256				                                                               ;//0x0C7ffd00
StackIrq	#	256				                                                               ;//0x0C7ffe00
StackFiq	#	0				                                                               ;//0x0C7fff00

;/*
;************************************************************************************************************
;** 				                       数据区确定存放中断向量的地址                                    **
;************************************************************************************************************
*/
	
	^	_ISR_STARTADDRESS
HandleReset		#	4
HandleUndef		#	4
HandleSWI		#	4
HandlePabort	#	4
HandleDabort	#	4
HandleReserved	#	4
HandleIRQ		#	4
HandleFIQ		#	4


HandleADC		#	4
HandleRTC		#	4
HandleUTXD1		#	4
HandleUTXD0		#	4
HandleSIO		#	4
HandleIIC		#	4
HandleURXD1		#	4
HandleURXD0		#	4
HandleTIMER5	#	4
HandleTIMER4	#	4
HandleTIMER3	#	4
HandleTIMER2	#	4
HandleTIMER1	#	4
HandleTIMER0	#	4
HandleUERR01	#	4
HandleWDT		#	4
HandleBDMA1		#	4
HandleBDMA0		#	4
HandleZDMA1		#	4
HandleZDMA0		#	4
HandleTICK		#	4
HandleEINT4567	#	4
HandleEINT3		#	4
HandleEINT2		#	4
HandleEINT1		#	4
HandleEINT0		#	4   	                                                                  ; //0x0c7fff84

;/*
;************************************************************************************************************
;*-                            				结束文件													   -*
;************************************************************************************************************
;*/
		END

⌨️ 快捷键说明

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