sdram.s

来自「嵌入式系统」· S 代码 · 共 282 行

S
282
字号
;/*-----------------------------------------------------------------------------
;@@@@
;@@@@ Copyright (c) 2000 Sharp Corporation All rights reserved.
;@@@@
;@@@@ (Summary)	: SDRAM Setting Program
;@@@@
;@@@@ (Comment)	: 
;@@@@
;@@@@ (Author)	: K.Misaki  
;@@@@
;@@@@ (History)	: Date 		Modifier	Comment
;@@@@
;@@@@ (RCS ID)	: $Header$
;@@@@
;-----------------------------------------------------------------------------*/
	GET SDRAMip.h
	GET SDRAMsystem.h

	MACRO
$label	APD_SDRAM_SETTING

     LDR r0, =APD_SDRAM_BASE;

    IF (APD_SDRAM0_E = APD_SDRAM_ENABLE):LOR:\
       (APD_SDRAM1_E = APD_SDRAM_ENABLE)
	
	    ;***************************************
	    ;	set SDRAM Timing 0 Registers
	    ;***************************************
	    ;*** Check SCE Value ***
	    IF ((APD_SDRAM_RIF >= APD_SDRAM_RIF_MIN):LAND:\
	        (APD_SDRAM_RIF <= APD_SDRAM_RIF_MAX))
	    ELSE
	         APD_SDRAM_RIF Error;
	    ENDIF
	
	    ;*** Check RCC Value ***
	    IF ((APD_SDRAM_RCC = APD_SDRAM_x4):LOR:\
	        (APD_SDRAM_RCC = APD_SDRAM_x8):LOR:\
	        (APD_SDRAM_RCC = APD_SDRAM_x16):LOR:\
	        (APD_SDRAM_RCC = APD_SDRAM_x32))
	    ELSE
	         APD_SDRAM_RCC Error;
	    ENDIF
	
	    LDR r1, =(((APD_SDRAM_RIF:SHL:APD_SDRAM_RIF_OFFSET)-1):OR:\
	              (APD_SDRAM_RCC:SHL:APD_SDRAM_RCC_OFFSET));
	    STR r1, [r0, #APD_SDRAM_TIMING0_OFFSET];
	
	    ;***************************************
	    ;	set SDRAM Timing 1 Registers
	    ;***************************************
	    ;*** Check tRP Value ***
	    IF ((APD_SDRAM_tRP >= APD_SDRAM_tRP_MIN):LAND:\
	        (APD_SDRAM_tRP <= APD_SDRAM_tRP_MAX))
	    ELSE
	         APD_SDRAM_tRP Error;
	    ENDIF
	
	    ;*** Check tRAS Value ***
	    IF ((APD_SDRAM_tRAS >= APD_SDRAM_tRAS_MIN):LAND:\
	        (APD_SDRAM_tRAS <= APD_SDRAM_tRAS_MAX))
	    ELSE
	         APD_SDRAM_tRAS Error;
	    ENDIF
	
	    ;*** Check tRCD Value ***
	    IF ((APD_SDRAM_tRCD >= APD_SDRAM_tRCD_MIN):LAND:\
	        (APD_SDRAM_tRCD <= APD_SDRAM_tRCD_MAX))
	    ELSE
	         APD_SDRAM_tRCD Error;
	    ENDIF
	
	    ;*** Check tRC Value ***
	    IF ((APD_SDRAM_tRC >= APD_SDRAM_tRC_MIN):LAND:\
	        (APD_SDRAM_tRC <= APD_SDRAM_tRC_MAX))
	    ELSE
	         APD_SDRAM_tRC Error;
	    ENDIF
		LDR r1, =APD_SDRAM_tRP_V:OR:APD_SDRAM_tRAS_V:OR:\
				 APD_SDRAM_tRCD_V:OR:APD_SDRAM_tRC_V
	    STR r1, [r0, #APD_SDRAM_TIMING1_OFFSET];
	
	    ;***************************************
	    ;	set SDRAM Timing 2 Registers
	    ;***************************************
	    ;*** Check tRP Value ***
	    IF ((APD_SDRAM_tXSR >= APD_SDRAM_tXSR_MIN):LAND:\
	        (APD_SDRAM_tXSR <= APD_SDRAM_tXSR_MAX))
	    ELSE
	         APD_SDRAM_tXSR Error;
	    ENDIF
	
	    ;*** Check CAL Value ***
	    IF ((APD_SDRAM_CAL >= APD_SDRAM_CAL_MIN):LAND:\
	        (APD_SDRAM_CAL <= APD_SDRAM_CAL_MAX))
	    ELSE
	         APD_SDRAM_CAL Error;
	    ENDIF
	
	    ;*** Check tWR Value ***
	    IF ((APD_SDRAM_tWR >= APD_SDRAM_tWR_MIN):LAND:\
	        (APD_SDRAM_tWR <= APD_SDRAM_tWR_MAX))
	    ELSE
	         APD_SDRAM_tWR Error;
	    ENDIF
	
	    LDR r1, =(((APD_SDRAM_tXSR-1):SHL:APD_SDRAM_tXSR_OFFSET):OR:\
	              ((APD_SDRAM_CAL-1):SHL:APD_SDRAM_CAL_OFFSET):OR:\
	              ((APD_SDRAM_tWR-1):SHL:APD_SDRAM_tWR_OFFSET))
	    STR r1, [r0, #APD_SDRAM_TIMING2_OFFSET];
    
	ENDIF

    IF (APD_SDRAM0_E = APD_SDRAM_ENABLE)
	    ;***************************************
	    ;	set SDRAM Discriptions 0 Registers
	    ;***************************************
	    ;*** Check EBW Value ***
		
		
	    IF ((APD_SDRAM0_EBW = APD_SDRAM_EBW16):LOR:\
	        (APD_SDRAM0_EBW = APD_SDRAM_EBW32):LOR:\
	        (APD_SDRAM0_EBW = APD_SDRAM_EBW8))
	    ELSE
	         APD_SDRAM0_EBW Error;
	    ENDIF
		

	    ;*** Check BAW Value ***
	    IF ((APD_SDRAM0_BAW = APD_SDRAM_BANK2):LOR:\
	        (APD_SDRAM0_BAW = APD_SDRAM_BANK4))
	    ELSE
	         APD_SDRAM0_BAW Error;
	    ENDIF
	
	    ;*** Check RAW Value ***
	    IF ((APD_SDRAM0_RAW >= APD_SDRAM_RAW_MIN):LAND:\
	        (APD_SDRAM0_RAW <= APD_SDRAM_RAW_MAX))
	    ELSE
	         APD_SDRAM0_RAW Error;
	    ENDIF
	
	    ;*** Check CAW Value ***
	    IF ((APD_SDRAM0_CAW >= APD_SDRAM_CAW_MIN):LAND:\
	        (APD_SDRAM0_CAW <= APD_SDRAM_CAW_MAX))
	    ELSE
	         APD_SDRAM0_CAW Error;
	    ENDIF
	
	    LDR r1, =((APD_SDRAM0_EBW:SHL:APD_SDRAM_EBW_OFFSET):OR:\
	              (APD_SDRAM0_BAW:SHL:APD_SDRAM_BAW_OFFSET):OR:\
	              ((APD_SDRAM0_RAW-11):SHL:APD_SDRAM_RAW_OFFSET):OR:\
	              ((APD_SDRAM0_CAW-8):SHL:APD_SDRAM_CAW_OFFSET))
	    STR r1, [r0, #APD_SDRAM_SDR0_OFFSET];
    ENDIF
    
    IF (APD_SDRAM1_E = APD_SDRAM_ENABLE)
	    ;***************************************
	    ;	set SDRAM Discriptions 1 Registers
	    ;***************************************
	    ;*** Check EBW Value ***
	    IF ((APD_SDRAM1_EBW = APD_SDRAM_EBW16):LOR:\
	        (APD_SDRAM1_EBW = APD_SDRAM_EBW32):LOR:\
	        (APD_SDRAM1_EBW = APD_SDRAM_EBW8))
	    ELSE
	         APD_SDRAM1_EBW Error;
	    ENDIF
	
	    ;*** Check BAW Value ***
	    IF ((APD_SDRAM1_BAW = APD_SDRAM_BANK2):LOR:\
	        (APD_SDRAM1_BAW = APD_SDRAM_BANK4))
	    ELSE
	         APD_SDRAM1_BAW Error;
	    ENDIF
	
	    ;*** Check RAW Value ***
	    IF ((APD_SDRAM1_RAW >= APD_SDRAM_RAW_MIN):LAND:\
	        (APD_SDRAM1_RAW <= APD_SDRAM_RAW_MAX))
	    ELSE
	         APD_SDRAM1_RAW Error;
	    ENDIF
	
	    ;*** Check CAW Value ***
	    IF ((APD_SDRAM1_CAW >= APD_SDRAM_CAW_MIN):LAND:\
	        (APD_SDRAM1_CAW <= APD_SDRAM_CAW_MAX))
	    ELSE
	         APD_SDRAM1_CAW Error;
	    ENDIF
	
	    LDR r1, =((APD_SDRAM1_EBW:SHL:APD_SDRAM_EBW_OFFSET):OR:\
	              (APD_SDRAM1_BAW:SHL:APD_SDRAM_BAW_OFFSET):OR:\
	              ((APD_SDRAM1_RAW-11):SHL:APD_SDRAM_RAW_OFFSET):OR:\
	              ((APD_SDRAM1_CAW-8):SHL:APD_SDRAM_CAW_OFFSET))
	    STR r1, [r0, #APD_SDRAM_SDR1_OFFSET];
    ENDIF
    
    ;***************************************
	;	set SDRAM Segment Map Registers 0 
    ;***************************************
    ;*** Check E Value ***
    IF ((APD_SDRAM0_E = APD_SDRAM_ENABLE):LOR:\
        (APD_SDRAM0_E = APD_SDRAM_DISABLE))
    ELSE
         APD_SDRAM0_E Error;
    ENDIF

    ;*** Check SIZE Value ***
    IF ((APD_SDRAM0_SIZE >= APD_SDRAM_SIZE_MIN):LAND:\
        (APD_SDRAM0_SIZE <= APD_SDRAM_SIZE_MAX))
    ELSE
         APD_SDRAM0_SIZE Error;
    ENDIF

    LDR r1, =((APD_SDRAM0_E:SHL:APD_SDRAM_E_OFFSET):OR:\
	          (APD_SDRAM0_START:AND:APD_SDRAM_START_VALID):OR:\
	          (APD_SDRAM0_SIZE:SHL:APD_SDRAM_SIZE_OFFSET));
	STR r1, [r0, #APD_SDRAM_SEG0_OFFSET];

    ;***************************************
	;	set SDRAM Segment Map Registers 1 
    ;***************************************
    ;*** Check E Value ***
    IF ((APD_SDRAM1_E = APD_SDRAM_ENABLE):LOR:\
        (APD_SDRAM1_E = APD_SDRAM_DISABLE))
    ELSE
         APD_SDRAM1_E Error;
    ENDIF

    ;*** Check SIZE Value ***
    IF ((APD_SDRAM1_SIZE >= APD_SDRAM_SIZE_MIN):LAND:\
        (APD_SDRAM1_SIZE <= APD_SDRAM_SIZE_MAX))
    ELSE
         APD_SDRAM1_SIZE Error;
    ENDIF

	LDR r1, =((APD_SDRAM1_E:SHL:APD_SDRAM_E_OFFSET):OR:\
	          (APD_SDRAM1_START:AND:APD_SDRAM_START_VALID):OR:\
	          (APD_SDRAM1_SIZE:SHL:APD_SDRAM_SIZE_OFFSET));
	STR r1, [r0, #APD_SDRAM_SEG1_OFFSET];

    ;***************************************
    ;	set SDRAM Control Registers
    ;***************************************
    ;*** Check SCE Value ***
    IF ((APD_SDRAM_SCE = APD_SDRAM_ENABLE):LOR:\
        (APD_SDRAM_SCE = APD_SDRAM_DISABLE))
    ELSE
         APD_SDRAM_SCE Error;
    ENDIF

    ;*** Check SRE Value ***
    IF ((APD_SDRAM_SRE = APD_SDRAM_CONTROLLER):LOR:\
        (APD_SDRAM_SRE = APD_SDRAM_SELF))
    ELSE
         APD_SDRAM_SRE Error;
    ENDIF

    ;*** Check PSE Value ***
    IF ((APD_SDRAM_PSE = APD_SDRAM_KEEP_ACTIVE):LOR:\
        (APD_SDRAM_PSE = APD_SDRAM_AUTO_DOWN))
    ELSE
         APD_SDRAM_PSE Error;
    ENDIF

    ;*** Check PME Value ***
    IF ((APD_SDRAM_PME = APD_SDRAM_ENABLE):LOR:\
        (APD_SDRAM_PME = APD_SDRAM_DISABLE))
    ELSE
         APD_SDRAM_PME Error;
    ENDIF

    LDR r1, =((APD_SDRAM_SCE:SHL:APD_SDRAM_SCE_OFFSET):OR:\
              (APD_SDRAM_SRE:SHL:APD_SDRAM_SRE_OFFSET):OR:\
              (APD_SDRAM_PSE:SHL:APD_SDRAM_PSE_OFFSET):OR:\
              (APD_SDRAM_PME:SHL:APD_SDRAM_PME_OFFSET));
    STR r1, [r0, #APD_SDRAM_CNTROL_OFFSET];
	
	MEND
	
	END	

⌨️ 快捷键说明

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