아직도 해결되지 않은 문제

버전이 바뀌면서, 매번 겪게 되는 문제가 있다. 그것은 바로 상호간의 버전 호환성 문제이다.
POD 의 경우 예전의 SD 와 HD 를 비교해볼때, 바뀐 부분이 없다. 바뀐 것이 있다면, 하드웨어가 많이 바뀌었다.

현재 통칭되어지고 있는 Ver 1 과 Ver 2 보드, 오픈케이블 HD 보드와 Cable Ready 보드이다.
크게 VSB 튜너가 장착 여부에 따라 불리어지고 있다. 또한 각각에 맞는 소스 코드도 달라서, 항상 서버에서는 두가지 버전이 존재한다.
이런 상황에서 POD 는 전혀 영향을 받지 않는다.

문제 발생

Ver1 과 Ver2 보드에서 POD 가 동작하지 않았다. 그것도 어느날 갑자기…
뿌려지는 메세지를 봤을 때는 wait 인 듯 싶었다. 하지만 이상하게도, 같은 보드에 SD 소스를 돌려보면 제대로 동작했다.
아무리 생각해도 이상했다.
결국 문제는 .cfg 파일에 있다는 것을 알았다. mb382_emi.cfg 파일의 가장 밑 부분을 보면, 아래의 내용이 있다.

  ## AL 01/05/02. Set bit 17 of GenConfig E for dvb logic enable. Use RmW type operation.
  ##config_E_val = peek -q 0x20010028                                             <---- 여기부터
  ##config_E_val |= 0x00020000            ## Set bit 17, leave others unchanged.
  ##poke -d 0x20010028   (config_E_val)   ## Gen Config E register.               <---- 여기까지
 
  poke -d 0x20200028   0x000007c1       ## EMI4.GENCFG, shift for all banks enabled
  poke -d 0x20200038   0x00320032       ## EMI4.SDRAMMODEREG CAS=2, Burst Length=4 
  poke -d 0x20200048   0x00000fff       ## EMI4.REFRESHINIT
  poke -d 0x20200050   0x00000000       ## EMI4.FLASHCLKSEL
  poke -d 0x20200058   0x00000000       ## EMI4.SDRAMCLKSEL
  poke -d 0x20200060   0x00000000       ## EMI4.MPXCLKSEL
  poke -d 0x20200068   0x00000001       ## EMI4.CLKENABLE
 
  ## According to the JEDEC standard a delay of 200us must be performed
  ## between starting the SDRAM clock and making any accesses to SDRAM.
  ## The following procedure will perform this delay in the ROM
  ## bootstrap.
##  emidelay (400)
 
  poke -d 0x20200040   0x00000001       ## EMI4.SDRAMINIT

HD 소스(DAC5000)의 경우, 위에 화살표 부분이 주석이 풀려있었다. 저 내용인 즉, BANK3 을 DVB_CI 모드로 세팅한다는 설정이다. POD 가 PERSONALITY CHANGE 를 하기 전까지는 메모리 모드로 엑세스를 해야 하기 때문에 잘못된 설정이다. SD 소스(DACS1000)의 경우에는 저 부분이 주석처리되어 있었다.
주석처리를 해주었더니, 잘 동작하였다.

남겨진 문제들

가장 큰 문제라고 한다면, 각 보드마다 결과가 다르다는 것이다. Ver1 보드의 경우 반드시, POD_WAIT 를 연결해주어야 동작했다.
하지만, Ver2 보드의 경우, 이와는 상관없이 심지어 POD_WAIT 를 연결하지 않아도 동작했다.

남겨진 문제 해결

각 버전 별 보드의 실험결과, 문제의 원인은 7020 칩으로 밝혀졌다. 아무 우연스럽게도, 내가 POD 를 실험했던 보드들은 모두 7020 이 제대로 동작하지 않는 것 들이었다. 오실로스코프로 찍어본 결과, 7020 이 고장난 보드에서 7020_WAIT 가 High 로 잡혀있었다.
하지만, 7020 이 제대로 동작하는 보드에서는 Low 로 잡혀있었다. 고장난 보드에서 WAIT 가 High 로 잡혀 있었기 때문에, 비록 POD_WAIT 가 연결조차 되지 않았어도, WAIT 가 High Active 이기 때문에 동작이 안되었던 것이다.

  • computer/digitalarena/dac5000_과_pod.txt
  • Last modified: 4 years ago
  • by likewind