지금까지 7회에 걸쳐서 윈도우 임베디드 시스템에 개발에 대한 여러 가지 이야기를 진행했다. 원래 1년이라는 시간에 12가지의 윈도우 임베디드 시스템 개발에 관한 이야기를 진행하려고 했는데 계획대로 되지 못해서 많이 아쉽다. 이번 칼럼에서는 스마트 폰에서부터 윈도우 임베디드 CE 운영체제에 관한 전반적인 내용에 대한 살펴보는 시간을 갖도록 하겠다. 지금까지 윈도우 임베디드 CE 운영체제에 대한 내용을 다루면서 전반적인 내용에 대해 알아보는 기회가 없었다. 이 기회를 통해 윈도우 임베디드 시스템에 대한 전반적인 내용을 살펴 보겠다.
2008년과 2009년은 경제 문제로 인해 혹독한 시련을 겪을 것이라고 생각된다. 윈도우 임베디드 CE 시스템 분야도 역시 어려움을 겪고 있다. 다행인 것은 삼성에서 출시한 옴니아 스마트 폰이 해외에서뿐만 아니라 국내에서도 호평을 받고 많이 팔린다는 것은 윈도우 임베디드 CE 시스템을 개발했던 사람의 한 사람으로써 기쁜 일이다. 스마트 폰은 윈도우 임베디드 CE 운영체제를 사용하는 시스템의 한 종류다. 다만 윈도우 임베디드 CE 운영체제와 달리 운영체제를 라이선스 받는 것에서부터 장치를 만드는 것까지 복잡한 단계 및 막대한 비용을 지불해야 한다는 차이점이 있다.
그럼 간단히 윈도우 모바일 운영체제로 개발하는 것에 대한 차이점을 살펴 보도록 하겠다.
아래 <표1>은 윈도우 임베디드 CE 운영체제와 윈도우 모바일 운영체제의 개발 방법 및 기타 사항을 간략히 정리한 것이다.

1.윈도우 임베디드 CE 프로젝트와 윈도우 모바일 프로젝트
태생이 동일한 윈도우 임베디드 CE 운영체제와 윈도우 모바일 운영체제는 커널이나 개발 방법은 동일하지만 개발 방법에 있어 위에서와 같이 많은 차이를 보인다. 가장 큰 차이점은 운영체제에 대한 접근성이다. 윈도우 임베디드 CE 운영체제는 MS의 웹 사이트에서 평가판을 다운로드 받고 개발을 당장 시작할 수 있을 정도로 이용이 용이하다. 반면에 윈도우 모바일 운영체제는 MS와 계약 및 보안 절차를 거치지 않으면 개발에 관련 문서나 툴에 대한 접근조차 할 수 없다. 개발 과정에 있어서도 하드웨어 및 소프트웨어에 관한 MS의 가이드라인에 따라서 개발을 해야 하고 최종 인증 작업도 MS가 지정하는 테스트 기관에서 인증을 획득해야 비로서 제품으로써 출시할 수 있다. 이에 반해 윈도우 임베디드 CE 운영체제는 제품이나 개발에 관한 모든 사항이 제조자의 의지와 제품에 따라 자유롭게 할 수 있다.
윈도우 임베디드 CE 운영체제에 대한 자세한 정보는 다음 사이트를 참고하기 바란다.
https://www.microsoft.com/windowsembedded/en-us/default.mspx

윈도우 임베디드 CE 평가판 다운로드 사이트
https://www.microsoft.com/windowsembedded/en-us/products/windowsce/getting-started.mspx
2.윈도우 임베디드 모바일, 윈도우 임베디드 CE 운영체제, 윈도우 임베디드 스탠다드
윈도우 임베디드 CE 운영체제가 윈도우 임베디드 운영체제의 주요 운영체제이긴 하지만 윈도우 모바일 운영체제와 같이 다른 운영체제도 존재한다. 여기에 PC에서 주로 사용되는 x86 프로세서 계열과 같은 프로세서에 사용되는 윈도우 임베디드 스탠다드 운영체제(이전에는 윈도우 XP 임베디드, 윈도우 비스타 임베디드와 같은 이름이었다. PC에서 사용되는 운영체제의 임베디드 버전이다)와 같은 운영체제가 존재한다. [그림2]는 윈도우 임베디드 운영체제의 현재 버전과 앞으로 나올 버전을 알려주는 로드맵이다. 윈도우 임베디드 CE 운영체제는 윈도우 임베디드 컴팩트(Windows Embedded Compact)라는 새로운 이름으로 바뀌며 올해 새로운 버전이 나올 예상이다.

각각의 운영체제에 대한 간단한 설명은 다음과 같다.
윈도우 임베디드 나브레디(Windows Embedded NavReady) - 내비게이션 시스템, PND(Personal Navigation Device)를 위한 윈도우 임베디드 CE 운영체제, 윈도우 임베디드 CE 운영체제에 내비게이션 시스템을 구성하기 위한 여러가지 구성 요소를 포함시킨 운영체제이다. 인터넷을 통하여 라이브 서비스를 이용하기 위한 라이브 기능, 각종 블루투스 프로파일, 가젯과 같은 기능들을 이용할 수 있도록 기능이 추가되었다. 한마디로 말해서 인터넷을 이용한 내비게이션 시스템을 구현할 수 있도록 만든 임베디드 운영체제라고 할 수 있다.
윈도우 임베디드 포스레디(Windows Embedded PosReady) - 바코드 및 구매 관리 시스템인 POS 시스템 개발을 위한 임베디드 CE 운영체제다. X86 프로세서를 기반으로 만들어진 운영체제이다. 윈도우 임베디드 스탠다드 운영체제와 동일한 운영체제 구성에 POS를 관리하기 위한 각종 컴포넌트들이 추가된 운영체제이다.
윈도우 임베디드 스탠다드(Windows Embedded Standard) - XP, 비스타 운영체제의 임베디드 시스템용 버전이다. PC 운영체제와 동일한 운영체제 기능 및 컴포넌트를 가지고 있다. PC와 달리 시스템에 따란 운영체제의 컴포넌트를 추가하고 빼는 등의 작업을 할 수 있다는 것이다.
3.윈도우 임베디드 CE 장치의 인증
윈도우 임베디드 CE 시스템은 인증을 받아야 하는가? 물론 받아야 할 것들이 있다. USB를 장치로 포함하고 있으면 usb에 관한 인증을 받고 받은 결과를 통해 usb.org를 통해 제품 등록이 되도록 해야 한다. 또한 블루투스등과 같은 통신 인증 및 MIC와 같은 전자제품으로써 받아야하는 기본 인증작업을 거처야 제대로된 제품으로써 판매될 수 있다. 또한 수출을 할 경우에는 해당 국가에서 요구하는 인증을 획등해야 하는 것은 당연한 일이다. 개발한 윈도우 임베디드 시스템에 대한 인증은? 윈도우 모바일 운영체제 이외에는 특별한 인증 자체가 필요하지는 않다. 윈도우 모바일 운영체제의 경우 운영체제에 대한 안정성 및 호환성을 검증하는 로고 테스트(Logo Test)를 통과해야만 운영체제를 탑재하고 제품을 출시할 수 있다.
이와 다르게 윈도우 임베디드 CE 운영체제는 CETK(CE Test Kit)라는 소프트웨어 툴을 사용하여 테스트 하도록 제공되어 있지만 어디까지나 개발업체의 자체적으로 테스트 하는 용도로 제공된다.
4.윈도우 모바일용 제품 개발? Vs. 윈도우 임베디드 CE 제품의 개발?
윈도우 임베디드 CE 운영체제를 이용해서 제품 개발을 한다는 것은 몇 가지 제한 점을 가지고 시작해야 한다. 현재 윈도우 임베디드 CE 운영체제를 탑재할 수 있는 프로세서는 ARM, x86, SH, MIPS 계열의 32비트 프로세서이다. 여기에 MMU(Memory Management Unit)가 반드시 있어야만 한다. 램이나 플래시 메모리의 경우 일반적인 실시간 운영체제보다 더 많이 차지하기 때문에 이러한 점을 미리 고려하고 시작해야 한다.
5.윈도우 임베디드 운영체제용 응용 프로그램 개발
윈도우 모바일용 응용 프로그램을 개발하기 위해서는 비주얼 스튜디오와 윈도우 모바일 SDK를 설치하고 응용 프로그램을 개발하면 된다. 윈도우 모바일용 응용 프로그램의 경우 운영체제 버전에 따라 윈도우 모바일 5 버전인지, 윈도우 모바일 6 버전인지에 따라 해당 SDK 만 설치하고 응용 프로그램을 개발하면 된다. 하지만 윈도우 임베디드 CE 운영체제의 경우 다소 다른 절차를 거쳐야 한다. 윈도우 모바일의 경우에는 MS 사이트에서 표준 SDK가 존재해서 응용 프로그램을 개발할 수 있었지만 윈도우 임베디드 CE 운영체제의 경우에는 해당하는 장치에 대한 SDK를 장치를 개발한 회사에서 입수하여 설치한 후 응용 프로그램을 개발하게 된다. [그림3]은 윈도우 모바일 SDK와 에뮬레이터를 사용하여 전화 송수신 관련 API를 테스트 하는 그림이다.
윈도우 모바일 개발 툴에 관련된 사항은 다음 사이트를 참고하기 바란다.
http://msdn.microsoft.com/en-us/library/bb158496.aspx

윈도우 모바일의 경우 표준화된 API 및 호환성 테스트를 통해 개발한 응용 프로그램이 대부분의 윈도우 모바일 장치에 호환되게 동작하지만 윈도우 임베디드 CE 장치의 경우 제조사 마다의 기능 구성 차이에 따라 응용 프로그램의 동작 여부가 달라진다. 따라서 윈도우 임베디드 CE 용 응용 프로그램의 개발은 플랫폼에 크게 의존하는 개발 형태가 되겠다. 윈도우 임베디드 CE 시스템의 개발 과정을 본다면 다음과 같다.
(1) 윈도우 임베디드 CE 용 하드웨어 개발
(2) 윈도우 임베디드 CE 운영체제 개발
(3) 디바이스 드라이버 및 시스템 관련 포팅 작업
(4) 개발한 윈도우 임베디드 시스템에 대한 SDK 생성
(5) SDK 설치 후 비주얼 스튜디오에서 응용 프로그램 개발
개발하려는 시스템에 대한 SDK를 입수, 설치 후 해당 플랫폼에 대한 응용 프로그램 개발을 진행하게 된다.
6.보안(Security)
윈도우 모바일 제품의 경우 가장 큰 차이점은 보안 관련 부분이다. 윈도우 임베디드 CE 제품의 경우 대부분 출시되는 제품이 보안이나 바이러스에 대한 특별한 고려 없이 출시 되고 있다. 하지만 윈도우 모바일 제품의 경우 통신상에서 이루어 질 수 있는 다양한 환경 고려를 통해 응용 프로그램 및 시스템 차원에서 보안 기능을 제공하고 있다. 특정한 응용 프로그램이 설치 및 실행 제어 등을 통해 보안 기능을 강화 하고 있는 것이다.

7.라이선스 모델(License)
윈도우 모바일 응용 프로그램의 경우 제품을 개발하는데 있어 스마트 폰 인지 아니면 터치가 되는 PDA 형태의 장치인지에 따라 제품 라이선스를 진행하고 개발하면 된다. 하지만 윈도우 임베디드 CE 운영체제의 경우 포함되는 내부 컴포넌트에 따라 라이선스가 달라지게 된다. 윈도우 임베디드 CE 장치에서 익스플로어나 윈도우 미디어 플레이어를 탑재하기 위해서는 프로(PRO) 라이선스를 위와 같은 컴포넌트 없이 운영체제의 기능만 사용하기 위해서는 코어(Core) 라이선스를 통해 운영체제를 탑재한 제품이 된다. 자세한 사항은 다음 사이트를 참조하기 바란다.
http://www.microsoft.com/windowsembedded/en-us/products/windowsce/default.mspx
8.RIL(Radio Interface Layer)
요사이 윈도우 모바일 스마트 폰에 대한 관심이 높아짐에 따라 RIL에 대한 관심도 높아지고 있다. RIL을 역할은 CDMA/GSM과 같은 무선 통신 장치와 통신을 하는 것이 주 목적이라고 생각하면 된다. 하지만 먼저 이 부분을 잘 이해하기 위해서는 윈도우 모바일 장치들의 주 목적에 대해서 먼저 이해해야 한다. 윈도우 모바일 장치들을 보면 다이얼러라는 기본 인터페이스를 통해 전화를 걸고, SMS를 보내고, 데이터 통신을 할 수 있다. 이 부분은 일반 핸드폰과 동일한 기능이다. 하지만 윈도우 모바일 장치에서는 MS가 제공한 기본 다이얼러 프로그램뿐만 아니라 사용자나 업체에서 만든 프로그램을 통해서도 다이얼러에서 했던 작업을 동일하게 프로그램을 작성하여 이용할 수 있다. 즉, VS2005로 Win32 API를 이용해 SMS를 보내고, 전화를 거는 등의 작업을 하는 응용 프로그램을 만들 수 있다는 것이다. 사용자가 개발한 응용 프로그램에서 무선 통신관련 API를 처리하는 부분(RIL 프락시(Proxy)라고 함)과 실제 무선 통신 장치와 통신을 통해 데이터를 처리하는 부분(RIL 드라이버라고 함)을 합쳐 RIL이라는 이름으로 부르는 것이다. 이렇게 두 개의 부분으로 만든 것은 윈도우 모바일(이제는 윈도우 임베디드 CE 도 사용가능)환경에서 응용 프로그램 개발을 용이하게 하기 위해서다. RIL의 기능을 간략하게 정리하면 다음과 같다. [그림4]는 RIL 구조를 보여주는 그림이다.

- 시리얼, USB, 기타 통신 방법을 통해 통신 모듈과 통신을 한다.
- 음성 통화, 데이터 통신을 관리한다.
- 단문 문자 메시지(Short Message Service)를 전송하고 수신한다.
- RIL1: 형식의 스트림 인터페이스 드라이버로 등록이 된다.
- SYSGEN_CELLCORE_RIL이라는 시스템 변수를 통해 RIL을 사용하는 컴포넌트를
생성하도록 한다.
- RIL의 구성 요소는 WINCE600PUBLICCELLCORE에 있다.
- RIL 드라이버는 WINCE600PUBLICCELLCORERILDRIVERMDD에서
소스가 있다.
9.Hopper.Exe
윈도우 모바일 개발 중에 재미있는 프로그램이 있다. 바로 Hopper.exe라는 프로그램이다. 이 프로그램은 윈도우 모바일 파워 토이(Windows Mobile Power Toy)라는 툴이나 윈도우 모바일 SDK를 설치하면 사용할 수 있다. 물론 윈도우 모바일 용 프로그램이다. 기능은 터치나 키 입력을 랜덤하게 발생시켜 시스템이나 응용 프로그램의 안정성을 검증하는데 사용하는 툴이다.
사용자가 일일이 테스트 해 볼 수 없는 사용상의 문제점등을 이 소프트웨어로써 검증해 볼 수 있는 것이다. 물론 주로 메뉴상에서 임의로 입력된 기능을 처리하다가 발생하는 문제이겠지만 개발 초기에 프로그램의 안정성 검증을 위해 간단하지만 좋은 툴 일 것 같아 간단히 설명해본다.
10.멀티미디어
윈도우 임베디드 CE 운영체제를 이용해 동영상을 재생하는 제품을 개발할 때 가장 먼저 알아야 하는 부분이 다이렉트 쇼(DirectShow)에 관련된 기술이다. 앞서 설명한 윈도우 임베디드 CE 운영체제에서 사용한 윈도우 미디어 플레이어도 그 근간은 다이렉트 쇼다. 윈도우 임베디드 CE에서 미디어 파일을 읽어 들이고, 코덱을 통해 영상과 음성 정보로 디코딩해 화면에 재생하는 과정은 다이렉트 쇼 필터들이 담당한다. 다이렉트 쇼는 윈도우 임베디드 CE 운영체제에서 멀티미디어 콘텐츠를 재생 및 기록(카메라, 마이크 입력을 통한 음성 녹음)을 위한 미들웨어 구조이고, 각 구조를 담당하는 구성요소는 필터라는 형태의 프로그램이 담당한다. 다이렉트 쇼는 PC의 다이렉트 X의 축소된 형태로, COM 기반의 제어 구조를 가진다. 다이렉트 쇼의 주 기능은 다음과 같다. <그림5>는 다이렉트 쇼의 전체적인 구조를 보여주는 그림이다.

- 고품질의 비디오 및 오디오 재생과 녹음 기능
- 다양한 형식의 미디어 및 파일 형식 지원
- 재생, 캡처, 변환 기능 지원
동영상을 재생하는 미디어 플레이어를 기본으로 미디어 파일을 읽어 들여 분석하는 '파일 리더 필터'와 오디오와 비디오 데이터로 분해해 주는 '디 멀티플랙서 필터', 영상을 디코딩 하기 위한 '영상 디코딩 필터', 영상을 다이렉트 드로우를 통해 LCD 화면에 뿌리기 위한 '랜더러 필더'등으로 구성돼 있다.
윈도우 임베디드 시스템 역시 시스템의 근간은 PC 운영체제이기 때문에 PC에서 사용되는 많은 기술들이 채용되었고 멀티미디어 역시 다이렉트쇼를 통해 구현되고 있다.
11.3D, OpenGL
3D를 이용한 사용자 인터페이스 환경, 내비게이션 시스템에서의 3D 지도 환경등 3D 환경이 유행처럼 번지고 있다. 3D를 지원하기 위해서는 하드웨어 차원에서 3D를 가속할 수 있는 3D 가속기능이 내장되어 있어야 제 기능을 발휘할 수 있다. 윈도우 임베디드 시스템에서는 3D 기능을 지원하기 위해 다이렉트 3D 모바일(Direct3D Mobile)나 OpenGL 환경을 제공할 수 있다.
마이크로소프트 다이렉트3D 모바일 혹은 D3DM이라는 이름으로 불리는 윈도우 모바일용 3D 응용 프로그램 인터페이스(API)다. 현재는 윈도우 CE 5.0, 윈도 임베디드 CE 6.0에서도 지원되고 있다. 임베디드 시스템은 하드웨어적인 성능(프로세서 성능, 코프로세서 지원 유무)이나 메모리 제약 때문에 PC에서 지원하는 모든 기능을 지원할 수는 없다. 하지만 윈도우 임베디드 CE를 사용하는 임베디드 시스템을 위한 표준 3D API로서 자리를 잡고 있다.
OpenGL은 2D 및 3D를 정의한 컴퓨터 그래픽 관련 산업계의 표준이기에 중요한 의미를 갖는다. 따라서 다이렉트3D 모바일과의 비교를 통해 기능적으로 어떤 차이가 있는지 확인해 볼 필요가 있다. OpenGL의 경우 라이브러리 형태로 제공되지만 다이렉트3D 모바일은 COM 형태의 인터페이스를 가진다. <그림6>은 OpenGL을 통하여 윈도우 임베디드 CE 환경에서 동작시키는 화면이다.

12.2D가속
앞에서 다이렉트쇼가 윈도우 임베디드 CE 운영체제를 위한 멀티미디어 시스템을 위한 기능이라면 2D 그래픽 가속을 위한 기능에는 다이렉트 드로우(DirectDraw)기능이 있다. 다이렉트 드로우는 2차원 그래픽 가속 기능을 위한 윈도우 임베디드 CE 운영체제의 기능이다. 물론 하드웨어적으로나 디스플레이 드라이버에서나 지원해야 사용할 수 있다. 다이렉트 드로우의 기능은 윈도우 임베디드 CE 상에서 그래픽이나 오버레이와 같은 기능을 사용하여 빠른 그래픽 성능을 이용하기 위해서 이용되고 있다.
끝으로
지금까지 최근 이슈가 되고 있는 여러 가지 윈도우 임베디드 CE 운영체제 대한 이슈에 대해 살펴봤다. 윈도우 임베디드 CE 운영체제도 계속 발전하는 운영체제이다. 올해 출시가 될 것으로 예상되는 윈도우 임베디드 CE 운영체제 7.0에는 더 많은 기능과 새로운 기능들이 포함될 것으로 예상한다. 하지만 중요한 것은 윈도우 임베디드 CE 운영체제가 아니라 이 운영체제를 통해 이룰 새로운 세상이라고 생각하며 본 칼럼을 마무리한다.
관련기사
- 윈도우 임베디드 CE 프로젝트의 12가지 금기2009.04.04
- 윈도우CE에서의 효율적인 전원관리에 관한 이야기2009.04.04
- 윈도우CE 디바이스 드라이버에 관한 12가지 이야기2009.04.04
- 윈도우CE 디버깅에 관한 12가지 이야기2009.04.04
필자는?
필자 라영호는 2007, 2008 Microsoft Windows Embedded 분야 MVP이다. 윈도우 모바일 관련 스마트폰 개발과 윈도우CE 관련 장치를 개발하고 있다. 개인적으로 운영하고 있는 윈도우CE에 관한 블로그(www.embeddedce.com)를 통해 윈도우CE 개발에 대한 다양한 생각과 방법론을 함께 생각해 보고자 노력 중이다. 최근에는 윈도우CE를 이용해 어떻게 빠르고 안정적인 시스템을 만들 것인가를 고민하고 있다. 아울러 윈도우CE의 포팅 뿐만 아니라 개발에서부터 최종 제품이 나오기까지 거쳐야 할 다양한 테스트 및 신뢰성 문제에도 관심을 가지고 있다. 조만간 윈도우CE에 대한 다양한 강좌 및 테스트에 관한 내용을 알릴 예정이라고 한다.