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' 핀에서 신호가 스코프에 찍힐 것이다.
마치며
여기서 언급하지 않은 사항들은 기존의 DACS5000 기반의 H/W 테스트 프로그램과 동일하다. 테스트 프로그램 설명 를 참고하기 바란다.