?? startup.src
字號:
;----
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -