USB 추가하는 3단계 방법
  • 2014-04-02
  • 편집부

임베디드 산업에서 USB가 널리 사용되고 있기 때문에 많은 개발자들은 USB를 임베디드 시스템에 추가하는 방법으로 비용 효율적이고, 사용하기 쉬운 USB 스마트 인터페이스에 의존하고 있다. 본고에서는 개발자들에게 USB 추가를 위해 필요한 방안에 대하여 알아본다.

글 | 에반 슐츠(Evan Schulz)
마이크로컨트롤러 제품 관리자
실리콘랩스

임베디드 시스템을 컴퓨터에 쉽고 빠르게 연결할 방법을 확보하는 것은 오늘날 시스템 설계자에게 필수 요건이 되고 있다. 임베디드 애플리케이션과 컴퓨터 간의 통신을 지원하는 수단으로는 현재 범용 직렬 버스(USB)가 가장 널리 사용된다. USB는 거의 모든 데스크톱 컴퓨터와 랩톱 컴퓨터, 태블릿에 사용되고 있다.
USB가 이렇듯 광범위하게 사용되면서 임베디드 개발자들은 USB 프로토콜을 사용하는 방법을 익혀 시스템 설계에 반영해야 하는 과제를 안게 되었다. 그런데 USB 통신 프로토콜은 복잡할 뿐 아니라 범용 마이크로컨트롤러(MCU) USB 설계를 구현하려면 시간도 많이 걸리고 쉽지가 않다. 일부 반도체 공급업체에서는 USB 설계와 관련한 복잡성을 해소하여 USB 추가 과정을 간소화하도록 설계된 고정 기능 통신 브리지를 제공하고 있다.
이러한 통신 인터페이스 제품의 대표적인 예라 할 수 있는 실리콘랩스(Silicon Labs) CP2130 USB에서 SPI로 연결되는 브리지 컨트롤러는 범용 MCU의 직렬 주변장치 인터페이스(SPI) 포트를 통해 연결함으로써 USB 연결을 지원한다. 그림 1은 통신 브리지가 임베디드 시스템과 어떻게 연결되는지를 보여준다. USB에서 SPI로 연결되는 브리지 디바이스 외에 다른 인터페이스를 지원하는 다음 통신 브리지도 사용할 수 있다.

- USB-to-UART, 2x UART, 4x UART
- USB-to-SMBus/I2C
- USB-to-I2S

USB 통신을 목표로 한 임베디드 시스템은 두 가지 범주로 나눌 수 있다. 즉, USB를 사용하도록 기존 설계를 업그레이드하거나 USB를 추가하여 새로운 설계를 향상시키는 방식이 있다.
어느 경우든 개발자는 USB와 관련한 전문 지식 없이도 간단한 세 단계에 따라 신속하게 USB 통신을 구현할 수 있다.

- 호스트 MCU에서 원하는 통신 주변장치를 식별한다.
- 평가 키트와 점퍼선을 사용하여 프로토타입을 만든다.
- 통신 브리지를 사용하여 맞춤형 도면과 레이아웃을 작성한다.

또한 개발자가 애플리케이션에 맞춤형으로 제작된 부품과 드라이버를 만들 수도 있다. 그러면 각각의 구체적인 단계를 자세하게 살펴보고 그 과정에서 몇 가지 설계 옵션의 장단점을 비교해 보겠다.

1단계: 호스트 MCU에서 대상 통신 주변장치 식별
기존 설계를 업그레이드하는 경우든, 새 설계를 향상시키는 경우든, 개발자는 호스트 MCU의 사용 가능한 통신 주변장치를 식별해야 한다. 기존 설계를 업그레이드하는 경우에는 호스트 MCU에서 사용되지 않는 주변장치를 찾아야 한다. 그런 주변장치가 없으면 SMBus/I2C와 같이 어드레싱이 가능한 프로토콜을 사용하면 된다.
새로 설계하는 경우에는 원하는 통신 프로토콜에 맞추어 호스트 MCU를 선택할 수 있다. 예를 들어 SPI 통신 프로토콜을 구현하려는 경우 개발자는 사용 가능한 추가 SPI 포트가 있는 호스트 MCU를 선택해야 한다. 또한 통신 주변장치를 선택할 때는 애플리케이션의 최대 전송 속도 요구 사항도 중요하게 고려해야 한다. 대량의 데이터를 고속으로 전송해야 하는 경우 SPI 또는 UART가 가장 적합하다. 전송 속도가 크게 중요하지 않거나 중재를 지원하는 멀티 디바이스 버스 연결이 중요한 경우 핀이 2개만 있으면 되는 SMBus/I2C가 가장 적합하다.
통신 주변장치를 선택하는 것 외에 이용 가능한 여러 드라이버 옵션을 고려하는 것도 중요하다. 가장 사용자 친화적인 옵션으로, 드라이버를 설치하지 않고도 사용 가능한 휴먼 인터페이스 디바이스(HID)급 통신 브리지를 들 수 있다. HID급 디바이스는 일반 운영 체제에 포함된 기본 드라이버를 사용한다. 따라서 디바이스를 USB 포트에 연결하기만 하면 바로 사용할 수 있다. 다른 드라이버 옵션으로는 가상 COM 포트(VCP) 드라이버, WinUSB/LibUSB 드라이버, 공급업체별 드라이버 등이 있다. 이들 옵션은 모두 드라이버를 설치해야 하지만 대개 HID급 제품보다 높은 처리량을 구현할 수 있다.

2단계: 평가 키트와 점퍼선을 사용하여 프로토타입 제작
다음 단계로 개발자는 통신 브리지 평가 키트를 사용하여 프로토타입을 제작한다. 점퍼선을 사용해 평가 키트를 호스트 MCU에 연결하면 된다. 이 프로토타입은 두 디바이스 간의 통신을 검증하고 도면 작성을 위한 기초로 활용할 목적으로 제작된다. 일반적으로 평가 보드에는 명확하게 라벨이 표시되어 있기 때문에 개발자가 설명서를 참고하지 않고도 점퍼선을 연결할 위치를 쉽게 알 수 있다.
그림 2의 예에서는 CP2130 USB-to-SPI 평가 보드를 SPI 슬레이브 예제 코드를 실행하는 C8051F850 MCU 카드에 연결한다. 이 예의 C8051F850 MCU 카드 대신 SPI 신호 테스트 포인트가 있는 기존 설계를 사용할 수 있다. 아래 그림에서 SPI 헤더는 MCU 개발 보드의 특정 포트 핀에 연결되었고 이 보드는 내장 SPI 주변장치에 연결되어 있다.
이제 하드웨어가 준비되었으니 데모 애플리케이션과 드라이버(필요한 경우)를 설치하여 USB 호스트 컴퓨터 준비 과정을 시작할 수 있다. 일반적으로 필요한 소프트웨어는 모두 제조업체의 웹 사이트에서 구할 수 있다. 제조업체의 웹 사이트에서 받으면 최신 소프트웨어와 설명서가 모두 포함되어 있으므로 이 방법이 권장된다. CP2130 브리지 디바이스의 경우 사용 전에 드라이버를 설치해야 하고 USB 통신 평가용 애플리케이션을 사용할 수 있다. 이 드라이버와 평가 애플리케이션은 평가 키트와 함께 제공되는 CP2130 소프트웨어 패키지에 들어 있다. 설치를 마치고 나면 평가 애플리케이션을 사용하여 USB를 통해 SPI 데이터를 C8051F850 MCU에 읽고 쓸 수 있다. 이제 몇 가지 읽기/쓰기 검증 테스트를 실행하여 작동 여부를 확인할 차례다.

3단계: 통신 브리지를 사용하여 맞춤형 도면/레이아웃 작성
2단계에서 제작한 프로토타입은 최종 설계 도면을 작성하는 데 도움이 된다. 먼저 통신 브리지 평가 키트의 도면을 찾는다. CP2130 USB-to-SPI 브리지 컨트롤러의 경우 www.silabs.com/USB-Bridge에 있는 CP2130-EK 사용자 가이드에 이 도면이 수록되어 있다.
평가 키트 도면은 USB 작동에 필요한 구성 부품을 보여 준다. 일부 통신 브리지에는 외장 구성 부품을 없애고 BOM 비용을 절감하며 설계를 간소화해 주는 기능이 통합되어 있다는 점에 주목할 필요가 있다. 사용하는 통신 브리지가 다음 기능을 지원하는지 확인해야 한다.

- 크리스탈리스 USB: 통신 브리지가 외장 크리스탈 없이 USB 통신을 지원하는가?
- 내장 5 V 레귤레이터: 브리지가 외장 구성 부품 없이 USB 연결을 통해 시스템에 전원을 공급할 수 있는가? 그렇다면 최대 출력 전류는 얼마인가? (이 기능은 주로 USB 버스 파워 애플리케이션에 적용된다.)
- 시스템 내부 프로그래밍 메모리: 브리지 디바이스에 USB를 통한 맞춤 구성을 지원하는 프로그래밍 가능한 메모리가 통합되어 있는가?
- 소형 패키지 옵션: 패키지 크기가 작으면 개발자가 이동성이 뛰어난 소형 솔루션을 만들 수 있다.

이러한 기능이 포함된 통신 브리지를 선택하면 설계가 간소화된다.
다음으로 프로토타입 연결을 CP2130 디바이스와 호스트 MCU 간의 SPI 신호(SCLK, MOSI, MISO, SS, GND)에 대한 도면상의 연결로 옮긴다. 레이아웃 작성을 계속하기 전에 도면을 실리콘랩스의 지원팀(www.silabs.com/contactsupport)에 보내 무료로 검토 받고 디바이스의 도면 구성이 올바른지 확인할 수 있다. 지원팀에서는 도면을 검토한 후 변경해야 할 경우 권장 사항을 제시한다. 이제 보드를 제조 부서로 보낼 준비가 끝났다. 제품 설계에 맞춤형 부품과 드라이버가 필요한 경우 이어지는 내용을 계속 읽어 보면 된다. 그렇지 않은 경우 바로 사용을 시작해 보자!

맞춤형 부품과 드라이버를 만들어야 하는 경우
통신 브리지 및 드라이버와 함께 공급업체별 표준 USB 설명자 및 문자열이 기본 제공되는 경우가 많다. USB 공급업체 ID(VID), 제품 ID(PID) 설명자와 직렬 문자열은 운영 체제에서 드라이버를 연결된 디바이스에 매핑하는데 사용된다. 따라서 이러한 정보가 정확히 일치하는 디바이스 2개가 시스템에 연결되어 오류가 발생하는 것을 방지하려면 설명자와 문자열의 조합이 고유해야 한다. 맞춤형 드라이버와 디바이스를 만들 경우 개발자가 제품별 문자열과 디바이스 설명자를 사용할 수 있다. 그림 3에는 일반 CP2130 디바이스를 설치했을 때 Windows에 표시되는 기본 문자열이 나와 있다.



제품을 성공적으로 맞춤화하려면 통신 브리지와 관련 드라이버(해당하는 경우)를 업데이트해야 한다. 통신 브리지마다 USB 연결을 통해 맞춤 구성할 수 있는 그래픽 맞춤화 유틸리티가 제공된다. 일반적으로 브리지 제조업체에서는 맞춤형 드라이버 생성을 위한 단계별 가이드 역할을 할 수 있는 드라이버 맞춤화 유틸리티도 제공한다. 디바이스를 맞춤화한 후에는 관련 맞춤형 드라이버를 호스트에 설치하지 않으면 디바이스가 호스트 시스템과 통신할 수 없다.

기타 유용한 팁
- 어떤 식으로든 드라이버를 맞춤형으로 제작한 후에는 운영 체제 공급업체의 추가 인증 단계를 거쳐야 할 수 있다. 대표적인 예가 Microsoft의 Windows Hardware Quality Labs(WHQL) 테스트이다. Windows 7(x64)과 Windows 8(x64)에는 인증되지 않은 드라이버를 설치할 수 없다. 다른 Windows 버전에서는 설치가 가능하지만 사용자에게 경고 메시지가 표시된다. Application Note 220: USB Driver Customization에서는 맞춤형 드라이버 제작을 위한 지침을 제공하고, Application Note 807: Recertifying a Customized Windows HCK Driver Package에서는 맞춤화된 Windows용 드라이버를 재인증받는 방법을 설명하고 있다. 이 두 가지 애플리케이션 노트는 www.silabs.com/interface-appnotes에서 참조할 수 있다.
- 맞춤화된 통신 브리지의 대량 생산을 위해 제조업체에서는 최종 시스템에 사용할 수 있도록 그래픽 맞춤화 유틸리티가 필요 없는 프로그래밍된 디바이스를 제공할 수 있다.
- 제품을 고객에게 납품하기 전에 USB 케이블과 맞춤형 드라이버를 제공할 플래시 드라이브, CD/DVD 또는 웹 주소를 포함하는 것을 잊어서는 안 된다.

추가적인 장점과 맺음말
USB를 추가하는 이 3단계 방식의 주된 목표는 임베디드 시스템에서 USB 통신을 손쉽게 지원하는 것이지만, 이러한 브리지 디바이스에는 기능을 통합하고 외장 구성 부품을 없애고 BOM 비용을 절감할 수 있는 특수한 기능의 GPIO 핀도 장착되어 있다. 그 특수한 기능의 예는 다음과 같다.

- USB 일시 중지 표시등
- 클럭 출력
- 데이터 트래픽에 대한 LED 토글
- 펄스 또는 에지 카운트
- 원격 시작

USB 브리지 칩 옵션을 평가할 때는 주요 통신 인터페이스를 모두 지원하는 포괄적인 브리지 솔루션 포트폴리오를 제공하는 반도체 공급업체를 찾아야 한다. 또한 고정 기능 통신 브리지를 선택할 경우 크리스탈리스 USB 작동, 내장 전압 레귤레이터, 시스템 내부 프로그래밍 메모리, 소형 패키지 옵션 등의 기능도 제공된다는 점을 주목할 필요가 있다.
차세대 임베디드 애플리케이션에 사용할 브리지 칩을 제대로 선택하면 궁극적으로 개발 작업의 부담과 비용을 대폭 줄이고 설계에서 출시로 이어지기까지의 시간을 단축할 수 있다. 표 1은 가장 일반적인 통신 인터페이스를 사용하는 10여 개의 실리콘랩스 브리지 제품을 비교하여 보여 준다. 

<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>



  •  홈페이지 보기
  •  트위터 보기
  •  유투브 보기
  • 100자평 쓰기
  • 로그인

세미나/교육/전시
TOP