ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로파일,스택,드라이버
    WINCE/Bluetooth자료 2014. 2. 14. 12:31

    블루투스란?

    1998년 2월에 에릭슨을 주축으로 SIG(Special Interest Group, www.bluetooth.org)가 설립되었다. 블루투스 기술은 표준화 작업을 진행했고, 2003년 v1.1과 현재 가장 많이 사용하는 v1.2를 발표하면서 본격적인 기술의 개선(전송속도와 거리의 개선, 주파수 호핑-특정 주파수 대역 안에서 신호를 바꿔가면서 통신하는 기법)과 함께 보급 및 대중화가 시작되었다. 현재 블루투스는 소형화, 저렴한 가격과 100mW 이하의 저전력으로 근거리 통신에서 가장 인기 있는 기술이자 디바이스가 되었다.

    CSR의 BlueCore는 2.4GHz 무선 베이스밴드(Baseband) 및 MCU를 통합한 H/W, S/W통합 솔루션으로 전 세계 55%이상의 시장 점유율을 차지하고 있다. 블루투스 v1.2까지 지원하는 BlueCore2, BlueCore3와 v2.0까지 지원하는 BlueCore4, BlueCore5제품이 있다. 각각의 개발 목적과 환경에 따라 원하는 칩을 선택하여 개발 할 수 있다. 범용으로 사용하는 ROM칩 구조와 독자적으로 동작할 수 있는 플래시칩(Flash chip), 오디오 스트리밍을 위한 특별한 형태인 멀티미디어 칩(Multimedia chip) 구조로 되어 있다.

    이러한 칩들로 하드웨어를 구성하고, 원하는 기능에 맞게 BCHS(BlueCore Host Software) 또는 WPP(Windows Profile Pack)을 사용하여 주 처리 장치(Host Processor) 또는 블루투스 모듈 내에 스택 프로파일(Stack Profile)을 구현하게 된다. 또한 위의 모듈의 종류에 따라 윈도 임베디드 CE에 적용하는 방법이 틀려지기 때문에 위 그림에 대한 개념도 잘 알아야 한다.

    블루투스 서비스를 위한 포팅을 하기 위해 세 가지가 반드시 구현 및 포함이 되어 있어야 한다.


    1. 블루투스 서비스를 위한 프로파일

    2. 프로파일을 제어할 수 있는 스택

    3. 블루투스 모듈을 사용할 수 있도록 하는 드라이버


    <그림1>윈도 임베디드 CE 6.0의 블루투스 프로파일


    프로파일은 두 가지 유형으로 나뉘어진다. 블루투스 디바이스를 위한 필수적이고 기본적인 컨포밍 프로파일(Conforming Profiles)과 실제 사용자에게 블루투스 서비스를 제공하는 인터오퍼러빌리티 프로파일(Interoperability Profiles)이 있다. 통상적으로 블루투스의 프로파일이라고 하면 인터오퍼러빌리티 프로파일을 의미한다. 기본적으로 윈도 임베디드 CE 6.0에 포함된 블루투스 프로파일은 다음과 같다.

    다음은 윈도 임베디드 CE의 실제적인 블루투스 서비스라고 할 수 있는 프로파일과 블루투스를 구동하기 위한 스택(Stack)에 대해 알아보자.


    <그림2>블루투스의 스택


    스택의 구조는 레이어(Layer)형태로 되어 있다. 또한 레이어를 추가하여 확장 할 수도 있다. 윈도 임베디드 CE 6.0 플랫폼 빌더(Platform Builder)에는 이러한 스택들이 구현되어 있다. 스택 중에는 소스가 공개된 것도 있고 그렇지 않은 것도 있으며 흔히 MS 스택이라고 한다. MS 스택을 기반으로 만들어진 프로파일이 바로 WPP인 것이다. 블루투스 장치 개발 중 호환성을 맞추기 위해 스택을 수정해야 하는 경우가 생길 수도 있어 개발자들은 BCHS를 윈도 CE에 맞게 수정 개발하는 것을 선호하기도 하지만 WPP가 제공하는 프로파일만을 구현하고자 한다면, 시간 절약이 가능한 WPP를 사용하는 것을 적극 추천한다.

    한편 MS 윈도 CE 플랫폼 빌더에서는 드라이버 역시 제공하고 있다. 기본적으로 제공하는 드라이버는 플래시가 포함되어 있는 블루투스 모듈의 드라이버이다. 롬(ROM) 타입의 모듈은 모듈업체에서 bcsp드라이버와 PSConfig파일을 제공을 받아야 한다. PSConfig 파일에는 블루투스의 주소 등이 포함되어 있는데 이 정보를 플래시에 넣어서 만든 것이 플래시 타입의 모듈인 것이다. 다음 그림은 Windows CE Platform Builder의 블루투스 드라이버 목록이다.

     

    윈도 임베디드 CE 5.0와 6.0 모두 같은 드라이버를 제공하고 있으며 블루투스의 인터페이스를 위와 같이 제공하고 있다. 총 5가지 종류의 드라이버가 있는데, 각각의 드라이버에 대해서 간단히 알아보고, 실제 작업을 할 때는 어떤 드라이버를 사용해야 하는지 알아보자.


    1. Bluetooth Stack with Integrated CSR Chipset Driver

    Bluetooth Chip중에 가장 많이 사용하는 CSR사의 칩을 지원하는 드라이버이다. Sysgen Variable은 ‘SYSGEN_BTH_CSR_ONLY’로서 단독으로 사용될 때 추가하면 된다. 기본 인터페이스는 UART이다. 이것만 추가하면 btd.dll이라는 드라이버가 생성이 되며 이는 CSR을 지원하는 라이브러리가 링크되는 형태로 되기 때문이다.

    2. Bluetooth Stack with Integrated SDIO Driver (SYSGEN_BTH_SDIO_ONLY)

    3. Bluetooth Stack with Integrated UART Driver (SYSGEN_BTH_UART_ONLY)

    4. Bluetooth Stack with Integrated USB Driver (SYSGEN_BTH_USB_ONLY)

    SDIO, UART, USB 인터페이스를 지원하는 드라이버로써 블루투스 모듈이 각각의 인터페이스에 빌트인(Built-in)되어 있을 때 사용한다. 이것 역시 라이브러리 링크 형태로 btd.dll이 생성되며 Sysgen Variable은 ‘SYSGEN_BTH_XXX_ONLY’ 이다.

    5. Bluetooth Stack with Universal Loadable Driver (SYSGEN_BTH)

    위의 모든 인터페이스를 지원하는 드라이버로써 MS의 블루투스 통합 드라이버(bthuniv.dll)라고 생각하면 된다. 그러므로 드라이버의 용량 역시 가장 크다. PNP방식으로서 미리 작성된 레지스트리를 참고하며 해당 인터페이스를 찾아 드라이버를 구동하는 방식에 사용된다. bthuniv.dll에 관리되는 여러 인터페이스의 드라이버 파일(bthamb.dll, bthcsr.dll, bthsdio.dll, bthuart.dll, bthusb.dll)이 생성된다.

    한편 블루투스의 디버깅에 대해서는 윈도 임베디드 CE 의 블루투스 관련된 소스는 ‘X:\윈도 임베디드 CE600\PUBLIC\COMMON\OAK\DRIVERS\BLUETOOTH\’ 이하에 있다. 특히 블루투스 모듈의 드라이버에 대한 소스는 트랜스포트(TRANSPORTS) 폴더를 참고하도록 한다. 개발을 하려고 막상 모듈을 붙였으나, 동작을 하지 않는 경우, 블루투스를 의심 하기 전 먼저 인터페이스 드라이버를 의심하기를 바란다. 단순히 UART로 붙어서 RX, TX만 확인해서는 안 될 수도 있다. 또한 하드웨어적으로 RS232 통신 칩이 붙어 있다면 이것 역시 확인을 해봐야 한다. 블루투스 모듈은 드라이버와 통신을 시작할 때, ‘C0’로 시작해서 ‘C0’로 끝나는 형식의 패킷을 3~4회 주고받으며 성공적으로 과정이 끝나면 정상 동작할 수 있는 상태가 된다.

    본격적인 디버깅을 위해서 디버그 메시지를 보도록 소스를 약간 수정을 하는 것이 필요하다. 디버그 모드(Debug Mode)로 시스젠(Sysgen)을 거쳐서 한다면, OS의 크기가 너무 커지고, 쓸데없는 메시지까지 출력이 되게 되므로 블루투스 드라이버의 디버그 메시지만 출력하도록 하자.



    출처 : http://cluster1.cafe.daum.net/_c21_/bbs_search_read?grpid=Pv0L&fldid=5Ao&datanum=139&openArticle=true&docid=Pv0L%7C5Ao%7C139%7C20080317154813&q=%C0%D3%BA%A3%B5%F0%B5%E5PC%B5%EE

Designed by Tistory.