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

📄 startup.src

📁 WinCE5.0BSP for Renesas SH7770
💻 SRC
📖 第 1 页 / 共 4 页
字号:
;----
RESTART_DQS
	MOV.L	#H'00000000, R0    ;repeat counter (CODE0->1F)
	MOV.L	#H'00000000, R3    ;DQS PAD select 
	MOV.L	#H'00008800, R4    ;DQS SHIFT
	MOV.L	#H'FEB00014, R5    ;DQSLVSET address
	MOV.L   #H'00000000, R6    ;PASS/FAIL flag

RPT_DQS_CASE                    ;DQSVLSET SET
	MOV.L	#H'00001100, R7
	MOV.L	#H'00000008, R8
REPEAT00
	MOV.L	R3,         @R5		;rset=fset=0,rsel=fsel=0~7
	MOV.L	R4,         @R5		;rset=fset=1,rsel=fsel=8~F
	ADD     R7,          R3
	ADD     R7,          R4
	DT      R8
	BF      REPEAT00
	NOP

	MOV.L   #H'00008800, R7     ;     R3       R7
	XOR.L   R3,          R7     ;R7 = 88** xor 8800
	MOV.L   R7,         @R5     ;set flag off
;***************************************
; ch1 auto 32byte cs2(DDR)=>cache check
;
; R0 : Repeat counter (code0->1F) [ defined above ]
; R3 : DQSLVSET pad selector data
; R4 : DQSLVSET pad shift data
; R6 : PASS/FAIL flag
; R7 : DDR_WORK
; R8 : SHDMACHCR0->SHDMATCR0->SHDMADAR1->SHDMASAR0
; R9 : LRAM_REF
; R10: Free
; R11: Free
; R12: Free
; R13: Free
;***************************************
	MOV.L   #DDR_WORK,      R7           ; address offset init
	MOV.L   #SHDMACHCR0,    R8
	MOV.L   #LRAM_REF,      R9

COMP_LOOP
	MOV.L	#H'1,           R11          
	MOV.L   R11,          @-R8           ; TCR

	MOV.L   #LRAM_WORK,     R10
	MOV.L   R10,          @-R8           ; Destination set

	MOV.L   R7,           @-R8           ; Source set

	MOV.L	#SHDMAC_SET,    R11          ; 32byte Burst AutoReq
	MOV.L   #SHDMACHCR0,    R8
	MOV.L	R11,           @R8

	MOV.L   #SHDMAC_CHCR_TE,R11          ; Finish ?
DDR2LRAM_WAIT
	MOV.L   @R8,            R12
	TST     R11,            R12
	BT      DDR2LRAM_WAIT

	MOV.L   #H'00000008,    R11
COMP_DATA
	MOV.L   @R9+,           R12          ; LRAM REF
	MOV.L   @R10+,          R13          ; LRAM WORK
	CMP/EQ  R12,            R13
	BF      FAIL_DQS_JMP
	NOP
	DT      R11
	BF      COMP_DATA
	NOP

	ADD.L   #H'20,          R7      ; Addition ADDRESS OFFSET
	MOV.L   #DDR_UPPER,     R10     ; COMPARE END ?
	CMP/EQ  R7,             R10
	BF      COMP_LOOP

	ADD.L   #H'00000001,      R6		; Flag set
FAIL_DQS_JMP
	MOV.L	#H'00000000,    R3      ;DQS PAD   sel init
	MOV.L	#H'00008800,    R4      ;DQS SHIFT set init
	ADD.L   #H'00000001,    R0      ;incrementasion code
	ADD.L   R0,             R3
	ADD.L   R0,             R4
	CMP/EQ  #CODE_MAX,      R0
	BT      STOCK_PASSFAIL
	SHLL    R6                      ; 1bit left shift
	BF      RPT_DQS_CASE
	NOP

;***************************************
; NOISE SEARCH PHASE
;
; R1 : Retry counter
; R6 : PASS/FAIL RESULT
; R14: PASS/FAIL flag data stock address
;***************************************
STOCK_PASSFAIL
	MOV.L   R6,       @-R14  ;PASS/FAIL flag stock
	DT      R1
	BF      RESTART_DQS
	NOP

CASE_DQS_END
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; OR operations are applied to flag data stock
; Calculate optimum value for DQS delay
;
; R0 : Storing OR result/DQS min value
; R1 : 10 counter / work register
; R2 : work register / DQS optimum delay value
; R14: PASS/FAIL flag data stock address
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	MOV.L   #H'00000000,  R0
	MOV.L   #RETRY_UPPER, R1

OR_CALC
	MOV.L   @R14+,      R2
	OR.L    R2,         R0
	DT      R1
	BF      OR_CALC
	NOP

	TST.L   R0,         R0
	MOV.L	#H'00000002,R2
	BT      DQS_ONLY         ; IF R0=0 jump DQS_ONLY
	NOP

	MOV.L   R0,         R1   ; Back up to R1
	MOV.L   #H'00000000,R2

MIN_SEARCH
	SHLL	R0		     ;1bit left shift
	BT	    MIN_FOUND        ;
	NOP

	ADD     #H'00000001,R2
	BF      MIN_SEARCH
	NOP

MIN_FOUND
	MOV.L   R2,         R0   ; LSB back up
	MOV.L   #H'0000001F,R2
	MOV.L   #H'00000001,R3

MAX_SEARCH
	SHLR    R1
	BT      CODE_CALC
	NOP

	SUB     R3,         R2
	BF      MAX_SEARCH     
	NOP

CODE_CALC   ;R0 = MIN  R2 = MAX  R2 = ANS

	ADD     #H'00000002,R2
	ADD.L   R0,         R2
	SHLR2   R2

	CMP/GT  R2,         R0
	BF      DQS_ONLY
	NOP
	MOV.L   R0,         R2

DQS_ONLY
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; Final set of DPCTL0/DDRBIST1/DQSVLSET
;
; R0: DDR register
; R1: PAD sel
; R2: CODE
; R3: CODE DATA set
; R4: Incremental value
; R5: Decremental value
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	MOV.L   #H'FEB00014, R0
;DQSVLSET
	MOV.L   #H'00000000, R1
	MOV.L   #H'00008800, R3
	OR	    R2,          R1
	OR	    R2,          R3
	MOV.L   #H'00001100, R4
	MOV.L   #H'00000008, R5
REPEAT_FIN
	MOV.L   R1,         @R0         ;rset=fset=0,rsel=fsel=0~7
	MOV.L   R3,         @R0         ;rset=fset=1,rsel=fsel=8~F
	ADD     R4,          R1
	ADD     R4,          R3
	DT      R5
	BF      REPEAT_FIN
	NOP

	MOV.L   R2,         @R0         ;atrset=atfset=clear

	MOV.L   #H'FE800014, R0         ;refresh
	MOV.L   #H'00000002, R1
	MOV.L   R1,         @R0         ;SCR(-PALL-)
	MOV.L   #H'00000004, R1
	MOV.L   R1,         @R0         ;SCR(-REF-)

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DDR_MANUAL_END
	MOV.L   #LRAM_RESULT,R2

	MOV.L   #H'FEA0000C, R0         ;
	MOV.L   @R0,         R1         ;DPCTL0 RD
	MOV.L   R1,        @-R2

	MOV.L   #H'FEA00014, R0         ;DPCTL1
	MOV.L   #H'00000000, R1
	MOV.L   R1,         @R0
	MOV.L   #H'FEB80004, R0         ;
	MOV.L   @R0,         R1         ;DDRBIST1 RD
	MOV.L   R1,        @-R2

	MOV.L   #H'FEA00014, R0         ;DPCTL1
	MOV.L   #H'00000002, R1
	MOV.L   R1,         @R0
	MOV.L   #H'FEB80004, R0         ;
	MOV.L   @R0,         R1         ;DQSLVSET RD
	MOV.L   R1,        @-R2

	LDS.L	@R15+,       PR
	MOV.L	@R15+,       R14
	MOV.L	@R15+,       R13
	MOV.L	@R15+,       R12
	MOV.L	@R15+,       R11
	MOV.L	@R15+,       R10
	MOV.L	@R15+,       R9
	MOV.L	@R15+,       R8
	MOV.L	@R15+,       R7
	MOV.L	@R15+,       R6
	MOV.L	@R15+,       R5
	MOV.L	@R15+,       R4
	MOV.L	@R15+,       R3
	MOV.L	@R15+,       R2
	MOV.L	@R15+,       R1
	RTS
_new_ddrpad_auto_tail
	MOV.L	@R15+,       R0

	;compile warning measures
	bra	_new_ddrpad_pool
	nop
	.POOL
_new_ddrpad_pool
	nop

	.ALIGN 4
DATA_AREA
    .DATA.L    H'00000000    ;H'00    caseA-10
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'0F78F0F0    ;H'20    caseB-10
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'00000000    ;H'40    caseA-20
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'0F78F0F0    ;H'60    caseB-20
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'00000000    ;H'80    caseA-30
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'0F78F0F0    ;H'A0    caseB-30
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'00000000    ;H'C0    caseA-27
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'0F78F0F0    ;H'E0    caseB-27
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'FFFFFFFF    ;H'100    caseA-11
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'F0870F0F    ;H'120    caseB-11
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'FFFFFFFF    ;H'140    caseA-24
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'F0870F0F    ;H'160    caseB-24
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'FFFFFFFF    ;H'180    caseA-25
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'F0870F0F    ;H'1A0    caseB-25
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'FFFFFFFF    ;H'1C0    caseA-41
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'F0870F0F    ;H'1E0    caseB-41
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'00000000    ;H'200   caseA-40
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'0F78F0F0    ;H'220   caseB-40
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'FFFFFFFF    ;H'240   caseA-26
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'F0870F0F    ;H'260   caseB-26
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'00000000    ;H'280   caseA-31
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'0F78F0F0    ;H'2A0   caseB-31
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'FFFFFFFF    ;H'2C0   caseA-32
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'F0870F0F    ;H'2E0   caseB-32
    .DATA.L    H'F0F0F04B
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'FFFFFFFF    ;H'300   caseA-33
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'F0870F0F    ;H'320   caseB-33
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'00000000    ;H'340   caseA-21
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'0F78F0F0    ;H'360   caseB-21
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'00000000    ;H'380   caseA-22
    .DATA.L    H'00000000
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'0F78F0F0    ;H'3A0   caseB-22
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'F0870F0F
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'FFFFFFFF    ;H'3C0   caseA-23
    .DATA.L    H'FFFFFFFF
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'00000000
    .DATA.L    H'F0870F0F    ;H'3E0   caseB-23
    .DATA.L    H'F0F0F04B
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
    .DATA.L    H'0F78F0F0
    .DATA.L    H'0F0F0FB4
;	.END

	ENTRY_END _new_ddrpad_auto_head

	.aendi		;"SH7770_1STCUT"

	LEAF_ENTRY _SWAIT
;**********************************************************
;* spec;
;* name=SWAIT : SOFT_WAIT;
;* func=jumps to " Soft Wait 200us ";
;* note=location address=H'E500E000 ; SH4A-LRAM
;
;**********************************************************
;SWAIT:
		MOV.L	R0,          @-R15
;		MOV.L	R1,          @-R15
;		MOV.L	R2,          @-R15
		STS.L	PR,          @-R15

;***   Soft Wait 200us Operation 
		MOV.L	#19000, R0	;no less than 200usec (80000cyc/400MHz)
SWAIT_LOOP:
		DT		R0
		BF		SWAIT_LOOP

		LDS.L	@R15+,       PR
;		MOV.L	@R15+,       R2
;		MOV.L	@R15+,       R1
		MOV.L	@R15+,       R0

		RTS
		NOP
	ENTRY_END _SWAIT

    .end

⌨️ 快捷键说明

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