USB(Universal Serial Bus) 인터페이스는 PC와 주변기기간의 연결을 좀더 빠르고 편리하게, 그리고 더욱 많은 기기를 연결할 수 있도록 만들어 왔다. 현재 주위만 보더라도 많은 장치들이 USB 인터페이스를 가지고 있음을 볼 수 있다. 프린터, 스캐너, 외장형 하드디스크, mp3 플레이어, 디지털 카메라 등의 기기들은 거의 대부분이 USB 인터페이스를 지원하고 있다. 또 480Mbps라는 꽤 괜찮은 속도를 가진 USB 2.0의 등장으로 이런 흐름은 더욱 가속화될 것으로 생각된다.
세계에는 약 13억 개 이상의 USB 장치가 있다고 한다. 그러나 이렇게 널리 쓰이고 있는 USB 기술이라도 취약점이 하나 있는데, 반드시 호스트로 동작하는 PC가 있어야 된다는 점이다. 호스트-주변기기(Host-Peripheral) 개념으로 성립되는 USB 기술은 중심 역할을 하는 PC가 사라져 버린다면 사실상 어떻게 할 수가 없는 것이다.
바로 이러한 약점을 보완하기 위해서 USB On-The-Go(이하 OTG) 기술이 추가되었다. USB OTG 기술의 등장으로 인해 USB 주변기기만으로 서로 연결할 수 있게 됐으며 USB 인터페이스를 좀더 많은 분야에 적용할 수 있는 가능성이 열리게 된 것이다. 즉 mp3 플레이어와 외장형 하드디스크를 연결해 서로 데이터를 주고받을 수 있으며, 핸드폰과 PDA를 연결해 무선 인터넷을 이용할 수 있게 되며, 디지털 카메라와 포토 프린터를 연결해 찍은 사진을 곧바로 출력할 수 있게 되는 것이다
USB OTG 기술의 개념
이전까지 USB는 PC에 주변기기가 연결되는 호스트-주변기기 개념에서 출발하였다. 새롭고 편리한 인터페이스로서 USB는 활동 범위를 계속 넓혀 나갔고 시간이 갈수록 USB 인터페이스를 채택한 수많은 제품들이 나오게 되었다. 이렇게 USB 인터페이스가 전 세계의 공통적인 인터페이스로 자리잡아 가면서 USB 주변기기 간의 연결에 대한 필요성이 점점 커지게 되었다.
예를 들어 PDA를 이용할 경우 여러 주변 장치들의 도움을 받고 싶을 때가 있다. 워드 작업을 위해 키보드를 달고 싶을 때도 있을 것이고, 외장형 하드디스크를 달아서 필요한 데이터를 전송하고도 싶을 것이다. 이전까지 이런 경우 각 회사에서는 독자적인 인터페이스를 만들어 이 장치들과 의사소통할 수 있도록 만들어 주었다. 그렇지만 꼭 동일 회사의 제품만 써야 했으며, 보편적인 USB 인터페이스는 사용하지 못하게 된다.
하지만 대부분의 PDA에 USB 인터페이스를 사용하게 된다면 어떻게 될까? 현재 시중에 나와서 PC에 연결할 수 있는 USB 키보드는 모두 PDA에 연결할 수 있으며, 당연히 외장형 하드디스크도 연결해 데이터를 주고받을 수 있을 것이다. 이러한 일들을 USB OTG 기술이 가능하게 해주는 것이다.
IEEE 1394는 P2P(Peer-to-Peer) 개념에서 성립되었으므로 사실 임베디드 기기간의 연결성에 있어서는 USB보다는 훨씬 더 유리한 위치를 가지고 있다. 홈 네트워킹을 배경으로 IEEE 1394는 더욱 많은 주목을 받게 되었고, 비숙련 사용자라도 편리한 설치와 조작으로 높은 속도의 인터페이스를 사용할 수 있다. 또한 PC 주변기기 인터페이스에서도 IEEE 1394를 지원하는 기기들은 점점 늘어나고 있는 추세이며 USB와 더불어 앞으로의 발전 가능성이 큰 유망한 기대주이다. <표 1>은 두 인터페이스 기술의 차이를 일목요연하게 보여주고 있다.
<표1>USB와 IEEE 1394의 비교 | ||
USB | IEEE 1394 | |
Topology | 호스트-주변기기 | peer-to-peer |
주변기기 지원 | 1호스트에 127개 디바이스 지원 | 동일한 네트워크에 63개의 디바이스 지원, 1024네트워크까지 가능(64000개 이상의 네트워크) |
최대 대역폭 | USB 1.1 : 12Mb/s USB 2.0 : 480Mb/s |
1394a-2000 : 400Mb/s 1394b : 800~3200Mb/s |
버스 중재 (Bus Arbitation) |
호스트에 의해 중재 | 모든 디바이스가 공평한 위치에서 액세스 |
핫 플러그인 기능 | O | O |
인터페이스 | 디지털 | 디지털 |
전송모드 | control, bulk, isochronous, interrupt | asynchronous, isochronous |
보안성 | - | DTCP(Data Trabsmission Content Protection) |
OTG 기술은 USB 진영이 IEEE 1394를 견제하면서 나온 듯하다. 이는 호스트-주변기기 개념에서 성립되어 있는 USB 관련 장치를 P2P 개념으로까지 확장해 차세대 임베디드 기기의 인터페이스까지 소화하기 위한 것이다. IEEE 1394에서 가능했던 기술을 USB에서도 가능할 수 있게 만들었기 때문에 두 기술간의 경쟁이 어떻게 진행되어 나갈지 지켜보는 것도 흥미로운 일이 될 것이다
[ USB OTG와 블루투스의 비교 ]
현재 PDA와 이동형 하드디스크가 블루투스 통신을 이용해 서로 데이터를 주고받는 제품이 소개되었는데, 무선이라는 점에서 블루투스가 강점으로 작용한다. 그러나 이 제품에 USB OTG를 적용하게 된다면 훨씬 빠르고 싼 값에 제품을 구현할 수 있게 된다. 잘 생각해보면 임베디드 기기가 항상 그렇게 연결될 필요가 있는 것은 별로 없다. 필요할 때 선을 연결해서 자료를 다운로드하고 업로드하면 되는 것이지 무선을 이용해서 계속 데이터를 주고받을 필요는 없는 것이다.
호 환성 문제도 간과할 수 없다. 현재 USB 디바이스에 비해 상대적으로 블루투스 디바이스는 별로 없다. 비록 무선이라 편리하기는 하지만 현재 많은 사람들이 사용하고 있는 13억 개의 디바이스와 통신하려면 어느 것이 좋겠는가. 이런 점에서 볼 때도 USB OTG는 블루투스보다 임베디드 시스템에 적용하는 데 유리하다.
USB OTG의 특징
USB 커넥터와 케이블에 대한 새로운 표준안
모바일 기기도 호스트의 기능을 가질 수 있기 때문에 USB OTG 포럼에서는 이전의 USB 커넥터에 없었던 A 타입의 작은 플러그를 추가로 채택했다. <그림 2>에서 보는 것처럼 미니(mini)-A 타입인데, 이를 수용하기 위해 미니-A 타입의 리셉터클(receptacle)도 추가됐다.
<그림 2> USB OTG에 새로 추가된 커넥터
미니-A 타입의 커넥터는 <그림 3>과 같이 계란형으로, 기존의 사각형이던 미니-B 타입의 커넥터와 구분된다
<그림 3>미니 타입의 플러그
미니 A타입 플러그
미니 B타입 플러그
이와 함께 호스트와 주변기기의 역할을 서로 바꿀 수 있는 듀얼-롤 디바이스(Dual-role Device) 기능도 추가됐는데, 케이블을 바꿔 끼우지 않아도 HNP(Host Negotiation Protocol)를 이용해 서로의 역할을 바꿀 수 있다. 물론 미니-AB 타입의 리셉터클도 추가됐다. 또한 플러그와 리셉터클 모두 미니-A 타입은 흰색, 미니-B 타입은 검은색, 미니-AB 타입은 회색으로 규정함으로써 사용자가 좀더 간편하게 사용할 수 있도록 배려하였다.
제한된 호스트 기능의 추가
PC의 주변기기로 작동하던 디바이스가 OTG 기능을 가진다면 그 주변기기가 호스트로서 작동할 수 있는 기회를 가지게 된다. 예를 들면 이전의 mp3 플레이어는 모두 PC와 연결되어 곡을 업로드, 다운로드할 수 있었다. 하지만 이 mp3 플레이이가 OTG 기능을 가진다면 PC가 아닌 플래시 메모리 카드 리더기 혹은 이동형 하드디스크와 연결돼 곡을 업로드ㆍ다운로드할 수 있는 기능을 지닐 수 있는 것이다.
그렇지만 mp3 플레이어가 이전의 PC와는 다르게 플래시 메모리 카드 리더기 혹은 이동형 하드디스크에 전원을 공급해줄 수 있는 능력은 지니지 못하게 된다. mp3 플레이어 자체도 그 자신만 감당하기 위해 설계된 배터리를 쓰기 때문이고 다른 주변기기까지 전원을 공급해줄 수 있을지는 보장된 것이 아니기 때문이다. 그래서 제한된 호스트의 기능을 가지게 되는데, PC와 호스트 기능을 비교하면 <표 2>와 같다.
<표2> OTG 기기와 PC의 호스트 성능 비교 | ||
OTG기기 | 일반PC | |
전류공급 | VBUS에 최소한 8mA공급 필요 | VBUS에 100mA 또는 500mA 공급 |
지원 디바이스 | '지원 주변기기 리스트'에 있는 디바이스만 지원 | 드라이버가 있는 모든 디바이스 지원 |
로딩 메커니즘 | 여러 개의 디바이스 드라이버 로딩 메커니즘 | 여러 개의 디바이스 드라이버 로딩 메커니즘 있음 |
저장 공간 | 제한된 공간에 드라이버 적재 | 제한되지 않은 공간에 드라이버 적재 |
또한 OTG 주변기기는 모든 USB 주변기기와의 연결을 지원할 필요는 없다. OTG 제품의 생산자는 그 제품이 어떤 OTG 기기를 지원할 것인지 결정해야 하고 지원되는 USB 주변기기들의 목록을 만들어야 되는데 이를 ‘지원 주변기기 리스트(Targeted Peripheral List)’라고 한다. 여기에는 지원 디바이스의 이름, 생산자, 디바이스의 타입, 모델 넘버 등의 정보가 들어가게 되며, 이 목록으로 어떤 OS가 있는지, 어떤 특정한 제품군의 USB 기기에 적용할 수 있는지 알 수 있게 된다.
듀얼-롤 디바이스 개념 추가
USB OTG에서는 이전의 주변기기와는 다른 새로운 개념의 디바이스가 등장할 수 있다. 바로 듀얼-롤 디바이스인데, 이는 한 주변기기가 호스트와 주변기기의 역할을 모두 하는 것을 일컫는다. 지금까지 USB 케이블은 신호를 전송하는 D+, D-선과 파워를 전송하는 VBUS, 그리고 접지선인 GND로 구성되어 있었다. 그러나 OTG 기술이 소개되면서 한 가지 문제점이 발생했는데, 두 개의 듀얼-롤 디바이스가 있다면 어느 쪽이 호스트의 역할을 하게 되고, 어느 쪽이 주변기기의 역할을 하게 되는지를 정하는 것이 필요하다. USB OTG에서는 이 역할을 케이블에 맡긴 것이다.
다음의 기능과 특성을 가지고 있는 디바이스를 듀얼-롤 디바이스라고 한다
◆ 제한된 호스트의 기능
◆ 주변기기로서의 풀 스피드 동작 (하이 스피드 동작은 옵션)
◆ 호스트로서의 풀 스피드 동작 (로우 스피드, 하이 스피드 동작은 옵션)
◆ 지원 주변기기 리스트 소유
◆ SRP
◆ HNP
◆ 오직 하나의 미니-AB 리셉터클 소유
◆ VBUS에 최소 8mA 이상의 전류 공급
<표2> UBS OTG의 활용 예 | ||
호스트 | 주변기기 | 동작 |
PDA | PDA 디지털 카메라 USB 키보드 USB 마우스 프린터 휴대폰 |
파일교환 파일 교환 사용자 인터페이스 사용자 인터페이스 자료 출력 웹 서핑, 파일 교환 |
mp3 플레이어 | mp3 플레이어 이동용 하드디스크 플래시 카드 리더기 |
곡 교환 곡 교환 곡 교환 및 데이터 저장 |
휴대폰 | 휴대폰 디지털 카메라 USB 키보드 mp3 플레이어 |
주소록 및 파일 교환 사진 전송 단시간 문자 전송 벨소리 교환 및 곡 교환 |
디지털 카메라 | 셋톱박스 프린터 |
사진 확인 사진 출력 |
플래시 카드 리더기 | 이동형 하드디스크 디지털 카메라 |
파일 교환 파일 교환 |
이동형 하드디스크 | 오토 PC 측정 장비 |
mp3 파일 교환 데이터 기록 |
관련자료 : USB기기들을 하나로 묶는 OTG.pdf
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
13 | JFlashARM으로 MCU에 bin(바이너리)다운로드 | makersweb | 2015.06.07 | 4921 |
12 | ST, STM32 MCU용 ‘통합 개발 환경(IDE)’ 무료 제공 | makersweb | 2015.03.04 | 9379 |
11 | AVR(AT90USB162)을 USB to Serial 로 이용하기 | makersweb | 2015.02.14 | 5317 |
10 | 실시간 운영 체제 또는 RTOS(Real Time Operating System) | pjk | 2014.12.02 | 6377 |
» | USB OTG 기술의 개념 | pjk | 2014.11.03 | 16121 |
8 | 폴링(Polling), 인터럽트(Interrupt), DMA(Direct Memory Access) | pjk | 2014.10.24 | 6569 |
7 | USB 핀아웃 | pjk | 2014.10.11 | 8939 |
6 | 시리얼 인터페이스 커넥터를 위한 핀아웃 | pjk | 2014.10.10 | 5353 |
5 | 부트로더의 start.S 분석 | makersweb | 2014.03.23 | 4147 |
4 | 임베디드 시스템 개발 환경 선택 | makersweb | 2014.03.05 | 4023 |
3 | GNU C 레퍼런스 메뉴얼 - 부록 D | makersweb | 2014.02.28 | 5 |
2 | printk() | makersweb | 2014.02.27 | 5637 |
1 | [Uboot 명령어 및 환경 변수 요약]U-Boot에 Command 및 Parameter에 대한 설명 | pjk | 2014.01.09 | 11278 |