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

📄 ramstart.s

📁 武汉创维特ARM7实验箱的全部源代码
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldr	r0,=0x7ff
	str	r0,[r1]

    #==== PORT C GROUP ====

	# nCTS0 nRTS0 OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT 
    # 11    11    01     01     01     01     01     01     
	# VD4 VD5 VD6 VD7 IISCLK IISDI IISDO IISLRCK 
	# 11  11  11  11  11     11    11    11        
	ldr	r1,=rPCONC	
	ldr	r0,=0xf555ffff
	str	r0,[r1]

	ldr	r1,=rPUPC	
	ldr	r0,=0x00ff						/*pc[8~15] PULL-UP					*/	
	str	r0,[r1]
    
    ldr	r1,=rPDATC						/*lcd on;led on						*/ 
	ldr	r0,=0xeeff	
	str	r0,[r1] 
	
    #==== PORT D GROUP ====
    #VFRAME VM   VLINE  VCLK   VD3   VD2   VD1   VD0 (LCD/MODE)
    #10     10   10     10     10    10    10    10  

	ldr	r1,=rPCOND
	ldr	r0,=0xaaaa
	str	r0,[r1]

	ldr	r1,=rPUPD	
	ldr	r0,=0xff						/*disable PULL-UP					*/
	str	r0,[r1]

    #==== PORT E GROUP ====
    # CODECLK OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT TOUT0 RXD0 TXD0   FOUT OUT
    # 10      01     01     01     01     01     10     10     11

	ldr	r1,=rPCONE
	ldr	r0,=0x255ab
	str	r0,[r1]

	ldr	r1,=rPDATE
	ldr	r0,=0x0f						/*output = 0						*/
	str	r0,[r1]

	ldr	r1,=rPUPE
	ldr	r0,=0x0                
	str	r0,[r1]

	
    #==== PORT F GROUP ====
    #nCTS1 RXD1 TXD1 nRTS1 nXDREQ0 nXDACK0 nWAIT IICSDA OUTPUT
    #010   010  010  010   11      11      10    10     01  
    
    ldr	r1,=rPCONF
	ldr	r0,=0x124be9
	str	r0,[r1]

	ldr	r1,=rPUPF
	ldr	r0,=0xff						/*disable PULL-UP					*/
	str	r0,[r1]

    #==== PORT G GROUP ====
    #OUTPUT OUTPUT OUTPUT EINT4 EINT3 EINT2 EINT1 EINT0
    #01     01     01     11    11    11    11    11
	ldr	r1,=rPCONG
	ldr	r0,=0x57ff  
	str	r0,[r1]
	
	ldr	r1,=rPUPG
	ldrb	r0,=0x00					/*all pullup and only input pin work*/
	strb	r0,[r1]


	#***************
	#*	 SET ETC    *
	#***************
	
	ldr	r1,=rSPUCR  					/*DATA BUS pull-up disable			*/
	ldrb	r0,=0x7
	strb	r0,[r1]

    #EINT7 EINT6 EINT5 EINT4 EINT3 EINT2 EINT1 EINT0
    #                  ------  falling edge  ------
    #000   000   000   100   010   100   010   010 
	ldr	r1,=rEXTINT 					/*EINT2,3,4 falling edge			*/
	ldr  r0,=0x42422
	str	r0,[r1]
	
    ldr     r0,=INTMSK
    ldr	r1,=0x07ffffff					/*all interrupt disable				*/
    str	r1,[r0]


    #*************************************************************************
    #*	Set clock control registers			        	       	             *
    #*************************************************************************
    ldr	r0,=LOCKTIME
    ldr	r1,=800	    					/*count = t_lock*Fin = 2000			*/
    str	r1,[r0]

   	ldr r0,=PLLCON						/*temporary setting of PLL			*/
   	ldr	r1,=0x34031						/*Fin=10MHz,Fout=60MHz,				*/ 
   	str	r1,[r0]
   	ldr	r0,=CLKCON		 
   	ldr	r1,=0x7fd8	    
   	str	r1,[r0]

   	ldr	r0,=rBWSCON  					/*#BWSCON Address					*/
   	ldr	r1,=0x11000100	
    str	r1,[r0] 
        
    ldr	r0,=rBANKCON0
    ldr	r1,=0x700    
    str	r1,[r0] 
        
    ldr	r0,=rBANKCON1
	ldr	r1,=0x700     					/* 0x7ffc							*/
	str	r1,[r0]       
		
	ldr	r0,=rBANKCON2
	ldr	r1,=0x700    					/* 0x7ffc							*/ 
	str	r1,[r0]       
		
	ldr	r0,=rBANKCON3
	ldr r1,=0x7568
	str	r1,[r0]       
	
	ldr	r0,=rBANKCON4
	ldr	r1,=0x700						/* 0x7ffc							*/
	str	r1,[r0]      
	 
	ldr	r0,=rBANKCON5
	ldr	r1,=0x700   					/* 0x7ffc							*/
	str	r1,[r0] 
	      
	ldr	r0,=rBANKCON6
	ldr	r1,=0x18008
	str	r1,[r0] 
		      
	ldr	r0,=rBANKCON7
	ldr	r1,=0x18000
	str	r1,[r0] 
		      
	ldr	r0,=rREFRESH
	ldr	r1,=0xac03e1
	str	r1,[r0]       
	
	ldr	r0,=rBANKSIZE
	ldr	r1,=0x16
	str	r1,[r0]       
	
	ldr	r0,=rMRSRB6
	ldr	r1,=0x020
	str	r1,[r0]       
	
	ldr	r0,=rMRSRB7
	ldr	r1,=0x020
	str	r1,[r0]  

#/***************************************************************************/
#/* Initialize stacks                                                       */
#/***************************************************************************/
    	ldr	sp, =SVCStack	
    	bl	InitStacks   

#/***************************************************************************/
#/* Call startram -- Run at sdram from this inst                            */
#/***************************************************************************/
		LDR		pc, = startram	
		
#/***************************************************************************/
#/* Clear the un-initialized global and static C data areas                 */
#/***************************************************************************/
#{  
startram :
		LDR		a1,=Image_ZI_Base		/* Pickup the start of the BSS area	*/
		MOV		a3,#0					/* Clear value in a3				*/
		LDR		a2,=Image_ZI_Limit		/* Pickup the end of the BSS area	*/       
		CMP		a1,a2                                                           
		BEQ		move_data                                                       
clear_loop :                                                                 
		STR		a3,[a1],#4				/* Clear a word, a1 += 4			*/                
		CMP		a1,a2					/* end of ZI ?						*/                         
		BNE		clear_loop				/* If not, continue					*/  
#                                                                            
# Move the initialized global and initialized C data areas                   
#                                                                            
move_data :                                                                   
		LDR		a1,=Image_RW_Base	/* Pickup the start of the DATA area    */
		LDR		a2,=Image_RO_Limit	/* Pickup the start of the DATA storage */
		LDR		a3,=Image_ZI_Base	/* Pickup the end of the BSS area		*/      
		                                                                        
		CMP		a1,a3                                                           
		BEQ		goto_main                                                       
		                                                                        
move_loop :                                                                    
		LDR		a4,[a2],#4                                                      
		STR		a4,[a1],#4				/* move a word, a1 += 4, a2 += 4	*/        
		CMP		a1,a3					/* end of DATA ?					*/                      
		BNE		move_loop				/* If not, continue					*/ 
                                                                             
goto_main :                                                                    
		BL      Main    	

#/***************************************************************************/
#/* The function for initializing stack                                     */
#/***************************************************************************/
InitStacks:
    	mrs    r0,cpsr					
    	bic    r0,r0,#MODEMASK			/*r0 AND NOT MODEMASK->r0			*/
										/*r0 OR UNDEFMODE|NOINT -> r1		*/
    	orr    r1,r0,#UNDEFMODE|NOINT   /*UndefMode							*/
    	msr    cpsr_cxsf,r1				
    	ldr    sp,=UndefStack			
	
    	orr    r1,r0,#ABORTMODE|NOINT   /*AbortMode							*/
    	msr    cpsr_cxsf,r1 	    	
    	ldr    sp,=AbortStack			

    	orr    r1,r0,#IRQMODE|NOINT
    	msr    cpsr_cxsf,r1 	    	/*IRQMode							*/
    	ldr    sp,=IRQStack             
	
    	orr    r1,r0,#FIQMODE|NOINT
    	msr    cpsr_cxsf,r1 	    	/*FIQMode							*/
    	ldr    sp,=FIQStack             

    	bic    r0,r0,#MODEMASK|0x80
    	orr    r1,r0,#SVCMODE
    	msr    cpsr_cxsf,r1 	    	/*SVCMode							*/
    	ldr    sp,=SVCStack      	
    	
    	mov    pc,lr					/*return							*/
    			
.END	
	
	
	

⌨️ 快捷键说明

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