해결해야 할 문제를 정리해보자~!

  1. POD 가 아닌 일반 PCMCIA 카드를 꽂았을 때, 에러문 처리
  2. Task Delay 문제
  3. POD PHYSICAL 루틴의 완전한 이해
  4. 중간에 뺐다가 끼웠을 때의 에러문 처리
  5. POD 첫번째 번지 깨지는 문제

POD 첫번째 번지 깨지는 문제

HPNX 로 확인해본 결과, 제대로 나오는 것이었다. 각각의 다른 POD 마다 가장 처음 나오는 튜플이 달랐다. 전혀 이상한 것이 아니었다. 또한 호스트가 인식하는 것은 Config 튜플이었기 때문에, 앞에야 어찌되었던 중요한 값만 제대로 나오면 되는 것이었다.

기타 문제들

POLL_TASK 의 카드가 들어왔을 때 메세지 큐를 보내는 부분에서 TASK_DELAY 를 156*3 만큼 주지 않으면, 버퍼 네고에서 리셋이 되어 버린다. 이유는 정확히 모르겠다.
우선 그만큼의 시간을 주었다.

→ '이 문제는 윗단에서의 Link Layer 에서의 문제였다. 또한 Cis read 를 체크하는 Printf 문 때문에, 시간이 길어져서 타임아웃이 되버리는 것이었다.'

버퍼 네고 후에 POD 카드를 뺐을 때 POD_EN 이 닫혀야 한다. High 로 올리는 함수를 Ts_Change 함수 다음에 추가했다.

중간에 뺐다가 끼웠을 때의 에러문 처리

문제는 중간에 버퍼 네고나 CIS READ 시에 리셋이나 CI_END 함수가 호출되어야 한다.
그때 바로 해주어야 하는 것이 바로, 현재 DVB_CI 모드의 호스트를 예전 Attribute 모드로 바꾸어 주어야 한다는 점이다.
바로 아래의 루틴을 아래와 같이 수정해 준다.

/* =========================================================================
    Required Function Decription
========================================================================= */
void ciEnd( U8 ciEndCause )
{
 
 
	TsInputChange(FALSE);	
	ciApiGpioWrite_zero(POD_EN);     // ts out off
 
	if(kill == 1)	
	{			
 
	podAppClose();			//pys_edit	--- POD application close
 
//-----------------------------------------------POD lower layer task close
	podLayerClose();
 
	}
 
	kill = 0;	
 
	switch( ciEndCause )
	{
		case CI_EVENT_CDINTERRUPT:               // 카드가 빠졌을 때
		case CI_PCMCIA_RESET_EVENT:              // PCMCIA 카드가 리셋되었을 때 
		{
 
			ciStatusFlag = 0;
			reset_mode();
		//	ciApiHWinit();
 
		}
		break;
 
		case CI_POD_RESET_EVENT:                 // POD 가 리셋 되었을 때
		{
			;
		}
		break;
	}
 
	clearTimer((void(*)())sendToResetTask);
}

이번에는 가장 중요한 함수라고 할 수 있는 reset_mode() 함수를 살펴보자!!

void reset_mode()
{
	TsInputChange(FALSE);	 // TS2 를 TS1 으로 바꾼다.  
	ciApiGpioWrite_zero(POD_EN);     // TS_OUT 을 닫는다.
	*((U32*)(0x20010000+0x28)) = 0x1803F;      // 어트리뷰트 모드로 세팅
	*((U32*)(0x202001c0)) = 0x04000E99;  // oe : read and write  bank3
	*((U32*)(0x20200200)) = 0x04000E99;  //oe : reaed and write bank4
 
}

Task Delay 문제

156 으로 되어 있는 값을 정의 되어 있는 값으로 수정했다.

UI 문제

  1. 처음에 메뉴에서 전채널 정보에서 '확인' 버튼을 누르면 다운되어 버린다.
  2. POD 가 꼽힌 상태에서 전채널 정보에서 채널 버튼으로 이리저리 누르다보면 다운되어 버린다.
  3. 시스템 정보에서 '확인' 버튼을 누르면 다운되어 버린다.
  4. 총체적으로 '확인'을 눌렀을 때, 다운되는 현상
  5. 미이라 스트림 끊김 현상 (결론 : rate 가 안 맞아서 끊김)
  6. 가장 하위 채널에서 아래 채널을 누르고 나면, 채널이 안바뀜 (system section 을 0x080000 로 하면, 초반에 되다가 안되고, 0x060000 으로 하면 아예 안됨)

A/V 문제 (2005.2.2)

  • computer/digitalarena/해결해야_할_문제들.txt
  • Last modified: 4 years ago
  • by likewind