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


찾기
제목 USB 용어 - Host, IN/OUT, Endpoint 0  추천하기
작성자 글쓴이 작성일 2014-10-29 16:22:33 조회수 508
   
  저번 강의에 이어 PDIUSBD12의 내부를 들여다보기에 앞서 우리가 익숙해져야 할 USB에 관련된 용어들이 몇 개 있어서, 오늘은 그것들 먼저 좀 짚고 넘어가 보자.

먼저 Host(호스트).
뒤에 “빠”자 자동으로 붙은 행자들아. 허~. 할말이 없당.
한국말로 주인(장, 님,…),
단순 무식하게 말해서 PC를 말한다.
왜냐하면 PC의 메인보드(또는 PCI슬롯에 꽂혀있는 USB 컨트롤러 카드)에 USB HOST Controller가 있기 때문이다.
이 Host가 USB포트에 꽂혀 동작하는 모든 디바이스, 허브 등을 컨트롤 한다.

앞으로 USB로 데이터가 왔다 갔다 할 때, 그 전송방향을 말해야 한다면,
항상 호스트를 기준으로 말한다.
즉, 데이터가 디바이스에서 호스트로 전송된다면, 호스트 입장에서는 데이터가 들어오는 것이 되므로 “IN” Transaction(트렌젝션),
그 반대로 호스트가 데이터를 디바이스에게 전송할 때는 “OUT” Transaction,
요렇게 말한다.

Transaction이 뭐냐고?
USB Spec.을 보시라. 거기 자세히 설명되어 있다.
설마 USB 디바이스를 만들려고 하면서 USB 스펙 한번 들여다 볼 생각을 안하고 있는 행자는 없으리라 생각한다.
(링크에서 다운받은 후 압축을 풀어 보자. 제일 큰 파일이 USB 2.0 Specification이다. Chapter 2를 뒤져 보시라.)

두번째, Endpoint(엔드포인트)
이 Endpoint가 우리가 실제로 데이터를 주고 받는 통로가 된다.
다른 말로 Pipe(파이프)라고도 한다.
(펌웨어 프로그래머들은 엔드포인트라 많이 부르고, 드라이버 프로그래머들은 파이프라고들 부르더라. 관점의 차이일 뿐, 같은 말이다.)
하나의 USB 디바이스는 여러 개의 Endpoint를 가질 수 있는데,
그렇다고 USB 케이블을 잘라보면 하나의 Endpoint(Pipe)에 대응하는 선들이 한 가닥씩 있느냐 하면,
그건 아니라고 봐요. 풉파라밥바 풉파파~. -.-;

잘라봐라 네 가닥 밖에 없다.
전원선 두 가닥. 데이터선 두 가닥.
데이터 선이 두 가닥이니 Endpoint도 두 개까지 가질 수 있을까?
천만의 말씀 만만의 콩떡이다.
그 데이터 선 두 가닥도 사실은 위상이 반전된 동일한 신호를 전송하므로 사실상 데이터를 전송하는 통로는 하나뿐이다.
(데이터를 외부 노이즈로부터 보호하기 위해 요렇게 한다.
유식한 사람들은 요렇게 위상이 반전된 신호를 보고 Deferential Signal 이라고 하더라.)

앞전에, USB 디바이스는 여러 개의 Endpoint를 가질 수 있다고 해 놓구서, 이제와서 데이터를 전송할 통로는 하나 뿐이라고 하니 헷갈린가?
그럴만하다. Endpoint는 약간 추상적인 개념이 들어가 있는 용어이다.
추상적이라고 하니 벌써 머리에 쥐난 행자들. 반갑다.
본좌도 “추상”자만 들으면 머리에 쥐날라 그런다.
그래서 본좌 친절히 행자들의 머리에 난 쥐에 손수 쥐약을 발라주리라. 푸헐헐~

우리가 USB 디바이스를 만들어 궁극적으로 하고자 하는 일이 뭔가?
이것 저것 종류는 많아도 결국은
바로 (윈도우) 어플리케이션과 통신을 하고자 함이다.
어떻게? ReadFile, WriteFile을 써서.
그 API들을 호출하기 전에 뭘 할까?
바로 CreatFile을 써서 File Handle을 먼저 얻어와야, 그 파일 핸들을 인자(Parameter)로 주어서 ReadFile등등을 호출해 써먹을 수 있다.
이 때 CreatFile을 호출해서 얻어오는 File Handle이 바로 Endpoint(Pipe)에 대한 핸들이다.
(대부분의 경우에…)


(그럴 일을 거의 없겠지만)
어플리케이션에서 한꺼번에 세 개의 File Handle에 읽고 쓰기를 동시에 해 버린다면?
그때는 데이터가 얽히고 설키는 게 아니라,
USB 호스트 컨트롤더가 먼저 보낼 놈, 다음에 보낼 놈, 마지막에 보낼 놈, 등등
교통정리를 해서 보내면,
SIE(Serial Interface Engine)에서 차례차례로 들어오는 신호들을 받아서
각각의 Endpoint에 데이터가 도착했고, 또는 데이터가 보내졌음을 알린다.

정리하면,
엔드포인트(파이프)를 통해 데이터를 주고 받으며,
각각의 엔드포인트를 오가는 신호들은 시간대별로 쪼개져서 왔다 갔다 하기 때문에, USB 케이블의 데이터 선이 한 가닥만 있어도 되는 것이다.


Endpoint는 이 통로를 통해 오가는 데이터의 성질에 따라 네 가지 중 하나의 것으로 세팅할 수 있는데, 그것들이 각각
1. Control Endpoint
2. Interrupt Endpoint
3. Bulk Endpoint
4. Isochronous Endpoint
이다.
(물론 하드웨어의 설계에 따라 설정할 수 있는 엔드포인트가 제한된다. )

오늘은 그 중에서 Control Endpoint를 잠깐 언급하고 넘어가자.
Control Endpoint는 주로 USB 디바이스에 간단한 명령을 하달하고 그 결과를 받기 위해 주로 사용한다.
USB디바이스라면 Control Endpoint 중에서도 특별히 “Default” Control Endpoint(Endpoint “0”)만은 꼭 가지고 있어야 하는데,
이 Endpoint를 통해 호스트가 디바이스를 인식하고, 설정하기 때문이다.
그리고 이 Endpoint를 쓰면 간단한 데이터 전송 정도는 쉽게 할 수 있기 때문에
Endpoint 0만을 가지고 있는 디바이스들도 가끔 있다.
예를 들면, 단순히 LED를 키고,끄는 장치를 만드는 데는 다른 Endpoint가 필요가 없다.

Interrupt Endpoint는 일정한 시간 간격으로 전송되어야 할 비교적 소량의 데이터를 위한 것이고,
Bulk Endpoint는 많은 데이터를 오류 없이, 그리고 전송시간에도 구애 받지 않고 보내고자 할 때 쓴다.
Isochronous Endpoint는 전송시간이 중요한 데이터가 있다면 약간의 삑사리가 있더라도 감수하고 보내고자 할 때 쓴다. 즉 데이터 전송의 대역폭은 보장되지만, 데이터의 무결성은 보장하지 않는다.

나머지 종류의 Endpoint에 대한 자세한 설명은 다음 회에.
 
댓글달기 회원에게만 댓글 작성 권한이 있습니다. 회원가입하여 정보공유를 하면 좋겠습니다.
첨부파일
답변
  스팸신고 스팸해제
글쓰기
 
이전글 직접 보드를 꾸밀 행자를 위하여
다음글 UniFull 보드 조립시 유의사항
 
 
| 회사소개 | 이용약관 | 개인정보취급방침 | 이용안내
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