7710 H/W 테스트 프로그램
7710 보드의 하드웨어 테스트를 하기위한 테스트 프로그램에 대한 설명을 정리했다. 기존의 5517 + 7020 에서 H/W 테스트 프로그램에서 몇가지 수정된 부분을 위주로 설명하겠다.
수정된 부분을 정리하자면, 다음과 같다.
- 7020 TEST, DDR TEST, 3125 TUNNER TEST, SSMT2111 QAM TUNNER TEST 삭제
- LG VSB TUNNER TEST 업데이트
7020 TEST, DDR TEST, 3125 TUNNER TEST, SSMT2111 QAM TUNNER TEST 삭제
첫 번째 부분은 굳이 설명하지 않아도 알 것이다.
7710 의 경우 DDR 이 메인 메모리로 사용되기 때문에 부팅 후에 테스트하는 것은 불가능 하다. 부팅하기 전에 .cfg 파일에서 테스트하는 방법 밖에 없다.
다음과 같이 추가한다.
config/board/mb391.cfg
##############################################
## procedure called to run from DCU ##
##############################################
proc board_runtime_init {
## start initialising the board
reset
board_init
## Make Sure we're using the correct tools!!
if ((st20toolsetversion -q) >= 0x02000501){
write
## Display This Files Version Number
write ----------------------------------------------------
write MB391/STi7710 BOARD CONFIGURATION VERSION [ (major_version). (minor_version)]
write
ST20C1MemoryInit ## clear C1 channel memory 0x80000000 to 0x80000040
mb391_setup
## Setup Complete, but display some basic version info
## 7710 Device ID, and Cut
write
temp = peek (STI7710_AF_DEVICE_ID) -q
write "STi7710 DeviceId =" -d ((temp)>>12 & 0x000003ff)
write "STi7710 Cut =" -d ((temp)>>28)
temp = peek (STI7710_AF_P_ID) -q
write "STi7710 Metal Fix =" -d ((temp) & 0x0000000f)
## EPLD FW version (MajorVer.MinorVer)
temp = peek (0x41000000) -q
temp &= 0x000000ff
write "MB391 EPLD Firmware Ver ="-d (temp / 16) "." -d (temp % 16)
write
write Setup Complete
write ----------------------------------------------------
write
############# 추가 시작!! #####################
write DDR-SDRAM TEST
w_value = 0
r_value = 0
ok_value = 0
while(w_value < 0x00001000 ){
poke (0xC0000000 + (w_value)) 1 -d
r_value = peek (0xC0000000 + (w_value)) -d -q
if(1 == r_value){
}else{
ok_value = 1
}
if(w_value == 0x00000100){write check 8%}
if(w_value == 0x00000200){write check 16%}
if(w_value == 0x00000300){write check 24%}
if(w_value == 0x00000400){write check 32%}
if(w_value == 0x00000500){write check 40%}
if(w_value == 0x00000600){write check 48%}
if(w_value == 0x00000700){write check 56%}
if(w_value == 0x00000900){write check 64%}
if(w_value == 0x00000a00){write check 72%}
if(w_value == 0x00000b00){write check 80%}
if(w_value == 0x00000c00){write check 88%}
if(w_value == 0x00000d00){write chcek 96%}
w_value++;
}
if(ok_value == 0){
write SDRAM TEST OK!!
}else{
write SDRAM TEST ERROR!!
}
############## 추가 끝!!! ##########################
} else {
write ********************************************
write Toolset Required is R2.0.5 [Patch1] Or Later
write ********************************************
quit 1
}
}
proc board_runtime_init_rom {
write resetting ...
reset
write call memory placements ...
board_init_hex
write call C1 memory init...
ST20C1MemoryInit
write end of board_runtime_init_rom waiting prepokeloopcallback...
}
##############################################
## standard runtime call for boards group ##
##############################################
LG VSB TUNNER TEST 업데이트
두 번째 부분은 기존의 튜너 테스트의 문제점을 수정했다.
기존의 경우 특정 주소에 값을 R/W 해서 정상 여부를 판단했지만, 테스트 과정에서 정확하지 않음을 발견했다. 그래서 튜너 테스트를 하기 전에 RESET 하는 루틴과 오실로 스코프를 이용해서 눈으로 직접 확인하는 방법을 사용했다.
case 8: VSB_Tuner_Reset(); // TUNNER RESET i2cTunerInit(); // TUNNER INIT & R/W TEST task_delay(15600); OnRun(579000000, 4); // TUNNING break;
7710 으로 넘어오면서 'VSB_RESET' 핀이 바뀌었기 때문에, VSB_Tuner_Reset() 함수를 수정해야 한다. 또한 튜너 테스트시 유선 케이블(MBC, KBS, SBS) 를 꼽고 테스트해야 한다. OnRun(579000000, 4) 가 VSB 스트림을 튜닝하는 역할을 한다.
튜너가 제대로 동작한다면, 'VSBIN_DATA' 핀에서 신호가 스코프에 찍힐 것이다.