기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요. 현재 개발중인 제품에서 usb관련 파트를 맡고 있는데,(스마트폰입니다.)

좀 골치아픈 문제가 발생해서 질문 드립니다.


해당 문제는 아래와 같습니다.


sd카드를 꽂고 데이터 전송중, otg core reset이라는 로그가 계속적으로 발생합니다.

또한 tethering으로 연결중 uplink downlink 수행시에도 발생을 합니다.

위 로그가 발생하면 usb 초기화 루틴을 수행하면서 데이터 전송에 많은 부하가 걸려서 

속도가 느려지게 되고 연결이 끊기는 경우도 생깁니다.

위의 otg core reset log가 위치한 파일의 경로는 다음과 같습니다.


================================================================================================

/kernel/driver/usb/gadget/s3c_udc_otg.c

static int s3c_udc_probe(struct platform_device *pdev) 함수에서

{

request_irq 등록

retval = request_irq(IRQ_OTG, s3c_udc_irq, 0, driver_name, dev);

}

/kernel/driver/usb/gadget/s3c_udc_otg_xfer_dma.c


/*

 * usb client interrupt handler.

 */

static irqreturn_t s3c_udc_irq(int irq, void *_dev)

{

intr_status = readl(S3C_UDC_OTG_GINTSTS);

gintmsk = readl(S3C_UDC_OTG_GINTMSK);


...중간 소스 생략 ......


if (intr_status & INT_RESET) { usb_status = readl(S3C_UDC_OTG_GOTGCTL); DEBUG_ISR("tReset interrupt - (GOTGCTL):0x%xn", usb_status); writel(INT_RESET, S3C_UDC_OTG_GINTSTS); set_conf_done = 0; if ((usb_status & 0xc0000) == (0x3 << 18)) { if (reset_available) {

// 해당 log가 출력됨 DEBUG_ISR("ttOTG core got reset (%d)!! n", reset_available); stop_activity(dev, dev->driver); reconfig_usbd(); dev->ep0state = WAIT_FOR_SETUP; reset_available = 0; s3c_udc_pre_setup(); } else reset_available = 1; } else { reset_available = 1; DEBUG_ISR("ttRESET handling skippedn"); } }

}

===========================================================================================

위의소스는 오드로이드 오픈소스에서 발췌한 것이며 현 개발 제품과 소스가 동일해 copy해서 발췌하였습니다.
s3c_udc_irq라는 인터럽트 핸들러가 불리는게 결국 위에서 등록한 request_irq로 등록한 인터럽트가 걸렸다는 
이야긴데.. 저 인터럽트를 호스트 컴퓨터측의 usb driver에서 인터럽트 signal을 날려주는 건지. 
아니면 usb controller(host 쪽)칩단에서자동적으로 쏴주는건지 궁금합니다
아니면 다른곳에서 저 인터럽트를 호출하는 부분이 있을까요?
혼자 해결해 보려고 했지만 도저히 모르겠어서 이렇게 질문을 남깁니다.
혹시 위와같은 경험이나, 해당사항에 대해서 알고 계신분은 답변 좀 부탁드리겠습니다.
==========================================================================================================
그리고 개인적인 질문인데 
retval = request_irq(IRQ_OTG, s3c_udc_irq, 0, driver_name, dev);
이 부분에서 IRQ_OTG가
#define IRQ_OTG S5PC1XX_IRQ_VIC1(24)
이렇게 등록이 되어있습니다.
제가 External interrupt pin을 이용한 인터럽트 등록은 이해하고 있지만.
VIC( Vector interrupt control)? 을 등록하는 거에 대해서는 잘 몰라서요.
VIC는 외부 인터럽트 핀처럼 HIGH나 LOW 시그널에 의한 인터럽트가 아닌,
어떤 Register주소에 직접적으로 write하는 걸로 인터럽트가 불리게 되는 것인가요?
질문이 넘 복잡한데 혹시 이부분 아시는 분 계시면 설명좀 부탁드릴께요.
부탁드립니다. ㅠ,ㅠ


rapel

2011.01.07 19:03:16
*.143.190.6

외부 핀에서 인터럽트가 걸리게되면 VIC( 벡터 인터럽트 컨트롤러 였던가요;;)에 지정된 이벤트가 발생됨니다.

이 인터럽트 이벤트를 소스로 해서 지정된 번지에 저장된 address를 cpu쪽으로 넘겨 줌니다. 이 지정된 address를 저장하고 있는 레지스터가 있는데 이에 ISR루틴을 지정 해주어야  정상적으로 인터럽트가 동작 되게 됨니다.


암튼 인터럽트를 정상적으로 수행 하기 위해서는

인터럽트 소스 를 지정하고, ISR함수 주소를 해당 레지스터에 기록하고

인터럽트가 발생되면

스텍 푸시

백터 테이블에 지정된 번지로 이동,

지정된 번지에 저장된 함수 주소로 점프, ISR 수행,

스텍 팝

과정을 수행 합니다.


백터 테이블을 사용한 인터럽트 방식이고, 이 테이블로 VIC의 레지스터를 사용 한다고 여기시면 이해가 빠르시리라 생각 합니다. 실 구현은 좀더 복잡 하지만 이정도로 보셔도 무방할것 같습니다.


s5pc100의 경우 는 사실 살펴 본적이 없어서 이렇다 라고 는 할수 없겠지만 6410및 기타 mcu바탕으로 말씀 드리면

대충 이런것 같습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
4168 Odroid의 u--boot 분석중에... [1] 송의석 2011-01-10 677
4167 V210용 u-boot LCD logo 구현 문의 [1] 김장균 2011-01-10 785
4166 이전버전의 안드로이드 리눅스 커널을 얻으려면 어떻게 해야 하나요? [6] sonbong 2011-01-10 1039
4165 안드로이드 쉘에서 elf 포멧 실행파일 실행하기 [3] jacket 2011-01-08 994
4164 내부 클래스에서 intent를 받도록 하고 싶습니다. choboja 2011-01-08 582
4163 [s5pv210]NFS로 안드로이드 부팅시 zygote 부분이 반복되는 문제입... file 강현구 2011-01-08 1138
4162 툴체인의 버전이 다르다면 컴파일이 되어도 동일하게 수행되지 않을 ... [2] sonbong 2011-01-07 510
4161 On-Screen Button [1] 하민근 2011-01-07 491
» 데이터 전송중 otg core reset 질문 [1] 오펭 2011-01-07 794
4159 coprocessor사용에 관한 질문입니다. [1] 스퍼맨 2011-01-07 625
4158 V210 툴체인과 Odroid-T 툴체인에 대해 궁금합니다.^^ [5] 치르르 2011-01-06 1264
4157 안드로이드 응용프로그램 강좌에서 단말세팅하는 강좌에서 진행이 안되... file [2] 황홀한뉴비 2011-01-06 1100
4156 이솝 v210 보드 마이크 관련 질문입니다. [2] 윤병진 2011-01-06 948
4155 Odroid-7 WIFI 테더링 구성 [1] o2less 2011-01-06 564
4154 Odroid-7 WIFI 테더링 [1] o2less 2011-01-06 724
4153 Gingerbread 관련 문의 [2] 김장균 2011-01-05 522
4152 aesop v210 부팅 모드 문의입니다. [2] 윤병진 2011-01-05 970
4151 Odroid-7 하드웨어 문의 사항입니다. [1] 박영삼 2011-01-05 529
4150 [문의]비디오 Raw(RGB565)데이터 LCD 출력하기 [3] 멀미통 2010-12-31 1199
4149 녹음 resampler 관련 입니다 [2] 해송향기 2010-12-31 516

사용자 로그인