로그인 | 회원가입
   이용안내    장바구니    주문조회    마이쇼핑    게시판
상품검색 검색 
아이디  
비밀번호
보안접속 보안접속
회원가입
  아이디찾기
  비밀번호찾기
상품목록
  ARM
  PIC
  AVR
  DSP
  MAXQ
  MSP430
  OTHER
게시판
공지사항
자유게시판
강좌-USB기타
자료실
샘플 기획전
전화: 031-429-0845
팩스: 031-477-1407
운영시간
  09:00 ~ 18:00
 
현재위치: > 게시판 > 강좌-USB기타
강좌-USB기타
USB및 기타자료입니다.


찾기
제목 Control, Interrupt, Bulk, Isochronous Endpoint 0  추천하기
작성자 글쓴이 작성일 2014-10-29 16:22:33 조회수 504
   
   

Control Endpoint는 주로 디바이스를 세팅하거나, 디바이스의 상태를 알기 위한 데이터 전송에 쓰이는데,

일반적으로 “Default” Control Endpoint(Endpoint 0)에서만 쓰이고,

그 외의 엔드포인트가 Control Endpoint로 세팅되는 경우는 드물다.

 

왜냐하면 굳이 다른 엔드포인트를 Control Endpoint로 세팅해서 통신 할 필요 없이

그냥 Default Control Endpoint를 사용해서 통신하면 되기 때문이다.

 

Control Endpoint의 가장 큰 특징이라면 데이터 송수신을 동시에 할 수 있다는 것이다.

, 디바이스에 어떤 명령을 내리고 그 결과를 리턴 받을 수 있다.

 

물론 한번에 주고 받는 데이터양은 제한되지만, 디바이스를 컨트롤 하기 위해 오가는 데이터가 원체 많지 않기 때문에,

이러한 제약은 별 의미가 없다.

 

Control 엔드포인트와는 달리 다른 엔드포인트들은 단방향 통신만이 가능하다.

 

 

두번째.

인터럽트 엔드포인트는 마우스, 키보드 같은 HID(Human Interface Device) 장치에서 데이터를 전송할 때 주로 쓰이는 엔드포인트이다.

 

인터럽트라고 하드웨어 인터럽트를 연상하지는 마시라. 그 의미가 다르다.

인터럽트가 걸리면 통신을 행하는게 아니라, 말 그대로 때때로 가끔 통신을 행한다고 인터럽트 엔드포인트이다.

 

이 입력장치들이 발생시키는 데이터는 호스트 컨트롤러 관점에서 보면,

그 양은 아주 적지만, 그렇다고 1~2초간 데이터 받기를 미루었다가 시간이 흐른 후에 데이터를 받을 수는 없는 성질의 데이터 들이다.

 

이러한 데이터들을 가져오기 위해서 USB 호스트 컨트롤러는 일정한 시간 간격으로 USB 디바이스에게 묻는다.

“너 보낼 데이터 있니?”

그 때 USB 디바이스가 보낼 데이터가 있다면 데이터를 보내고, 없다면 그냥 없다고 대답하면 된다.

 

보낼 데이터가 있으면 보내면 되지. 왜 호스트가 물어볼 때까지 기다릴까?

바로 USB 컨트롤러를 호스트컨트롤러라 부르는데, 그 힌트가 있다.

호스트 컨트롤러의 반대말이 무얼까?

바로 슬레이브(slave) 디바이스이다.

(물론 그렇게 부르지는 않는다.)

 

이 노예(slave)는 주인님(host)이 뭘 물어볼 때까지 입도 뻥끗하면 안 된다.

Slave들이 자기가 보낼 데이터가 있다고 host 허락도 없이 막 보내 버리면

host가 어느 놈이 뭐라 말하는지 알 수가 없다.

그래서 교통정리를 위해 데이터를 보내라 말라 할 권한은 전적으로 호스트에게 준 것이다.

 

원할 때 데이터를 보낼 수 없는 대신,

인터럽트 엔드포인트는 자신을 호스트에 소개하는 이력서에다가

나는 얼마마다 한번씩 체크해 주세요. 하고 써 놓는다.

그럼 호스트가

! 이 엔드포인트는 100mS마다 한번씩 체크를 해 달라고 하는구나 알아차리고

그 시간 간격으로 보낼 데이터가 있나 없나를 체크하게 한다.

 

앞서 자신을 소개하는 이력서라고 했는데,

전문적인 용어로다가 Descriptor(디스크립터)라고 한다.

엔드포인트를 위한 이력서는 Endpoint Descriptor

디바이스를 위한 이력서는 Device Descriptor

등등등

 

다음 회에 디스크립터에 대해 조금 더 알아보고.

강좌가 옆길로 더 새기 전에 엔드포인트의 종류로 다시 돌아오자.

 

 

인터럽트 엔드포인트와 비슷한 게 Isochronous Endpoint이다.

인터럽트 엔드포인트와 아이소크로너스 엔드포인트가 가장 크게 대별되는 점은 바로

데이터 통신시 에러가 생기면 이를 복구하느냐 아니냐 이다.

 

다른 모든 엔드포인트들(Control, Interrupt, Bulk Endpoint)은 데이터 전송시 오류가 생기면

데이터를 재전송하는데,

(이 시점에서 우리가 데이터 전송 시 오류가 발생했고, 이를 재전송하는 마는지에 관심을 가질 필요는 없다.

왜냐하면 호스트 컨트롤러와 SIE사이에서 일어나는 일이고, 이 둘이 자동으로 다 알아서 해주기 때문이다.)

Isochronous Endpoint로 전송되는 데이터는 오류가 나건 말건 기냥 디립다 데이터를 보낸다.

 

? 데이터의 무결성 보다, 안정적인 대역폭의 데이터 전송이 더 중요하니까.

 

주로 USB 웹캠이나 USB 스피커에서 쓰이는 전송모드인데,

웹캠을 예로 들자면

초당 15~30프레임의 이미지 데이터가 날라가는데,

픽셀 몇 개 삑사리 났다고 그게 대수겠는가?

그보다는 버벅거리지 않고 원할하게 프레임이 전송되는 것이 사용자가 더 편안하게 느낄 것이다.

 

스피커도 마찬가지로 들릴 듯 말듯한 미세한 잡음 보다는 데이터 재전송에 따를 시간 지연 때문에 뚝뚝 끊기는 현상이 생긴다면 사용자에게는 더 거슬릴 것이므로 Isochronous 모드로 전송한다.

 

사실 Isochronous 모드로 전송한다고 해서 오류가 그리 많이 발생하지도 않는다.

물론 케이블 특성, 길이, 주변 환경 등등등 변수는 많지만,

일반적인 사용환경에서는 오류가 날 확률이 무시할 정도로 적다.

고 읽었는데, 어디서 읽었는지는 까먹어서 구체적인 수치는 인용할 수 가 없다. -.-;;;;;

 

정리하자면 Isochronous Endpoint는 많은 양의 Time Critical한 데이터를 전송하기 위한 Endpoint이다.

 

 

이와 비슷하지만 다른 Bulk Endpoint가 있다.

그 이름에서 풍기는 이미지와 같이 Bulk는 무데기 데이터를 전송하기 위한 모드이다.

 

앞서 언급한 바와 같이 Bulk Endpoint는 데이터 전송 시 오류검출과 복구를 행한다.

따라서 오류가 났을 때 데이터를 재전송 하게 되므로 Time Critical한 데이터의 전송에는 맞지 않는다.

사실 최대 대역폭은 Iso보다 Bulk가 더 크지만,

문제는 최대 대역폭이 보장 안 된다는 데 있다.

 

Bulk 엔드포인트를 통한 데이터 전송은 호스트 컨트롤러가 한가할 때만 이루어진다.

즉 호스트가 바쁘면 좀 뻥을 섞자면 10초가 지나도 데이터 전송이 1byte도 안 일어날 수 있다는 것이다.

Control + Interrupt + Isochronous 엔드포인트를 할당하고 남은 대역폭이 Bulk 모드 통신을 위해 할당된다.

(보통은 저것들 다 합쳐봐야 얼마 안돼서, Bulk가 사용하는 대역폭이 젤루 크지만….)

USB 메모리 스틱 같은 이동식 저장장치가 바로 Bulk Endpoint를 통해 통신하게 된다.


댓글달기 회원에게만 댓글 작성 권한이 있습니다. 회원가입하여 정보공유를 하면 좋겠습니다.
첨부파일
답변
  스팸신고 스팸해제
글쓰기
 
이전글 UniFull보드 테스트
다음글 Bulk In Pipe(PIPE 01)를 통해 디바이스로 데이터 전송하기
 
 
| 회사소개 | 이용약관 | 개인정보취급방침 | 이용안내
Copyright ⓒ 2010 KitKorea All rights reserved.
전화 : 031-429-0845 FAX : 031-477-1407
Contact open@kitkorea.com for more information.
법인명(상호):인터전자 주식회사 주소:14120 경기도 안양시 동안구 흥안대로 112-1 (호계동)
사업자 등록번호 안내 [138-81-28277] / 통신판매업 신고 제 안양 1753호 [사업자정보확인]
개인정보보호책임자 :홍성호(open@kitkorea.com) / 대표자(성명):홍성호
cafe24