자료제공 김재형 팀장 / MDS테크놀로지 www.mdstec.com

오래 전부터 예고 되었던 "임베디드 시스템"이 바꾸는 세상은 이미 다양한 기기들의 개발로 우리 생활에 있어 일상 품목으로 자리 잡은 지 오래다. 대표적인 "임베디드 시스템"인 "스마트폰" 과 "타블렛"에 대한 기사들이 연일 쏟아지고 있으며 우리의 일상 곳곳에 이런 기기들을 심기 위한 노력이 가속화 되어 또 다른 전망과 시대를 예고하고 있다. 우리 미래의 일상을 변화시킬 "임베디드 시스템"의 끊임 없는 노력은 현재/미래 진행 중에 있다.

"임베디드 시스템"의 발전을 주도했던 운영체제(이하 'OS'라 함) 중 하나인 "Windows Embedded CE"가 "Windows Embedded Compact 7"이라는 새로운 이름으로 드디어 출시 되었다. 기존의 기능들을 한층 더 강화하고, 새로운 기능들로 무장하였다. 무엇보다도 최신 CPU와 Multi-Core기술을 지원하여 성능이 대폭 향상 되었으며 다양한 UI 환경을 쉽게 개발할 수 있게 되었다. 본 기고에서는 "Windows Embedded Compact 7"에 추가된 주요 기능과 CE 6.0에서 달라진 기능들에 대해서 알아 보고자 한다.

한층 강화된 커널 (Kernel)

"Windows Embedded CE" 제품 중 처음으로 SMP(Symmetric Multi processing Support)를 지원하여 최대 250개 CPU core를 사용할 수 있다(실질적으로는 8개로 제한). 이를 통해서 커널은 수많은 쓰레드들을 각 CPU core에 분배하여 시스템의 성능과 안정성을 높였다. 시스템의 전체적인 성능을 떠나 <그림1>의 "System Monitor"를 보면 4개의 core가 모두 각기 다른 쓰레드를 실행하는 것을 볼 수 있다. SMP가 지원되면서 단일 쓰레드에 의한 CPU 과부하와 전체적인 시스템 성능저하 또는 시스템 정지를 방지할 수 있게 되었다. SMP가 지원되지 않은 과거에는 쓰레드가 문제 없이 실행 중이라 할지라도 UI와 다른 쓰레드의 성능에 많은 영향을 끼쳤다.

SMP가 지원되는 시스템에서는 문제되는 쓰레드가 한 개의 CPU core만을 점유하기 때문에 다른 CPU core들이 어플리케이션을 위한 OS를 계속 운영할 수 있다. <그림 2>는 높은 우선순위 레벨을 갖고 무한루프 하는 쓰레드가(프로세스)가 실행 되었을 때 각 CPU core의 상태를 보여준다.


CPU1 core만 100% 과부하 상태이고 다른 CPU core들은 정상적인 운영 상황을 보여 준다. 이로써 OS와 다른 어플리케이션은 여전히 정상적으로 운영된다. 만약 이러한 시나리오가 SMP가 지원되지 않는 단일 CPU core 환경에서 실행 되었다면 전체적인 시스템에 막대한 영향을 끼치거나 시스템 정지 상태를 초래할 것이다. 

SMP API가 제공되기 때문에 어플리케이션에서 각 CPU core의 상태 확인과 제어가 가능하다.  최신 ARM core(ARMv5, ARMv6, ARMv7) 환경을 지원하기 위해서 OS가 다시 컴파일 되었으며 멀티미디어 성능을 올리기 위한 NEON(Advanced SIMD)과 VFP(Vector Floating Point)가 지원된다. x86과 MIPS CPU환경을 여전히 지원하지만 ARMv4 와 SHx계열은 지원하지 않는다.  스케쥴러는 이전 버전과 동일하여 32,000개의 프로세스를 동시에 실행 가능하고, 무한개의 쓰레드와 256 레벨의 쓰레드 우선순위, Hard-Real Time OS 기능을 지원한다.

메모리

SMP의 지원만이 OS의 성능을 개선한 것이 아니다. RAM의 용량을 대폭 늘려 새로운 임베디드 환경을 충족하였다. "Windows Embedded CE"가 512MB의 물리메모리 제한을 가졌던 여러 이유 중 하나는 "Windows CE 1.0"이 유일하게 지원하였던 MIPS와 SH3 계열 CPU들이 512MB까지 RAM용량을 지원하는 하드웨어 구조의 영향이 크다. 또한 "Windows CE 5.0"까지 프로세스당 32MB의 가상메모리가 할당 되었기 때문에 대용량 물리메모리 요구는 크게 문제되지 않았다.

하지만 새로운 임베디드 환경의 요구에 따라 "Windows Embedded CE 6.0"부터 프로세스당 가상메모리를 2GB로 늘렸으나 여전히 512MB 물리메모리 제한을 두었다. CPU의 발전과 더불어 많은 메모리의 필요성에 따라서 "Windows Embedded Compact 7"은 3GB까지 물리메모리를 지원한다. <그림 3>은 1GB에 이르는 물리메모리를 인식한 시스템 속성 정보이다.  또한 메모리의 관리 기능이 대폭 향상되어 가상메모리와 물리메모리 페이징의 분열화를 최소화 하였으며 이로 인한 불필요한 메모리의 낭비(Memory leak)를 개선하였다.
 
파일 시스템

성능 향상된 FAT(TFAT)과 exFAT을 기본 파일시스템으로 사용하여 파일처리의 속도가 개선되었다. SD메모리 카드 드라이버를 다시 개발하였으며 USB Host Controller 드라이버를 개선하여 이들 메모리 장치의 파일 처리 성능이 대폭 향상되었다. 또한 "Low Storage Notification"이 새롭게 추가되어 저장 디스크의 볼륨이 거의 찼음을 알리는 기능이 제공된다. 
 
디바이스 드라이버

디바이스 드라이버의 모델과 구조의 변경은 없다. 하지만 "I2C" 와 "Accelerometer"드라이버가 새롭게 추가되었으며 "블루투스 2.1+EDR"을 지원한다. 앞서 언급한 USB Host Controller 드라이버가 개선되어 처리능력과 호환성이 대폭 개선되었다.  멀티터치 기능을 효율적으로 지원하기 위해서 터치 드라이버가 Stream Interface 모델로 변경되었다. 하지만 이전 터치드라이버를 지원하기 위해 Native 드라이브 환경도 지원한다.   

네트워킹과 멀티미디어




Windows 7 PC의 네트워킹 환경과의 호환성 및 연결성을 고려하여 "NDIS 6.1"(Net work Driver Interface Specification)로 향상 되었다. 다양한 네트워킹 환경 지원과 더불어 "DLNA 1.5"(Digital Living Network Alliance)가 새롭게 지원되면서 홈네트워킹을 이용한 멀티미디어 컨텐츠의 활용 가능성이 확대되었다.

임베디드 모바일 환경에 적합하고 OEM 커스터마이징이 용이한 "Internet Explorer ver 7.0"기반의 브라우저가 탑재 되었으며 "Adobe Flash Player ver. 10.1"이 플러그인 되어 Flash 컨텐츠의 재생과 유튜브 동영상 재생이 가능하게 되었다. OS가 지원하는 "멀티터치"와 "제스처" 기능을 충분히 활용하여 모바일 인터넷 브라우징이 가능하다.


멀티미디어 컨텐츠의 동기화 기능만 제공했던 MTP (Media Transfer Protocol)가 별다른 포팅 없이 사용할 수 있게 되었으며 Windows 7 PC의 "Device Stage"를 지원하기 위해서 "MTP Responder"로 그 기능을 확장하였다.  디바이스 사용자는 "Device Stage"를 통해서 PC에 별도의 소프트웨어를 설치하지 않고 PC에 연결된 제품의 정보를 확인 하거나 파일 복사(업데이트) 또는 특정 작업을 수행 할 수 있고, 제품의 매뉴얼 확인 그리고 필요한 액세서리를 구입할 수 있다. 참고로 MTP의 연결은 USB를 기본으로 하나 TCP/IP 연결도 가능하다.


강력한 User Interface 환경

마이크로소프트의 강력한 UI 환경으로 "Silverlight"는 이미 많은 응용분야에 활용되고 있다. "Windows Embedded CE 6.0 R3"가 임베디드화 된 "Silverlight for Embedded"를 소개 하였으나 PC 환경과 의 호환성 및 성능에 다소 문제가 있었다. "Windows Embedded Compact 7"은 "Silverlight ver. 3.0"을 기반으로 하는 환경이 지원되며 개발의 효율성과 호환성을 위하여 많은 부분 개선되었다.

Silverlight 디자인 개발툴인 "Expression Blend ver. 3.0" 툴이 "Windows Embedded Compact 7"개발 툴킷에 포함되어 있으며, 디자인된 UI project는 별도의 변환 작업 없이 바로 "Plat form Builder"의 Sub-Project로 import된다. C++ 기반 Win32 API를 통해 제어되는 Silverlight 디자인 객체들은 프로젝트 import과정에서 주요 함수의 설정과 초기화가 자동으로 이루어져 개발 효율성을 높였다.

또한 OS의 주요 기능과 샘플 어플리케이션들이 Silver light를 기반으로 작성되어 있어 OEM을 위한 레퍼런스를 충분히 갖췄다. OS가 지원하는 "Open-GL ES"와 하드웨어 가속기를 사용하여 보다 성능을 높일 수 있다. <그림 8>의 Silverlight기반 화상 키보드는 "Windows Embedded Compact 7"에 추가된 새로운 기능인 "Win dow Compositor"를 사용하여 실행중인 어플리케이션 간에 겹치는 화면(windows)이 발생되면 상위의 화면은 투명하게 처리한다.


"Window Compositor"는 하나의 디스플레이 화면에 여러 개 응용프로그램의 윈도우 출력을 관리 및 설정하는 것으로 실제로 "Alpha Blending"을 사용한다. 윈도우 의 오버랩핑과 부분적인 투명처리를 수행하기 때문에 최상의 사용자 환경 개발을 지원한다.


개발 툴킷

이미 여러 매체를 통해서 알려졌듯이 "Windows Embe dded Compact 7"의 개발 환경은 "Visual Studio 2008" IDE를 기반으로 하는 "Platform Builder"를 사용한다. 사용 방법은 이전 CE 6.0 개발 환경과 유사하나 일부 OS 빌드 메뉴와 설정이 변경되었다. 위에서 언급한 최신 CPU core를 지원하기 위한 컴퍼일러를 포함하고, DEBUG / RETAIL빌드 외 "CHEC KED"빌드 환경이 추가되어 OS 부하가 적고, 드라이버와 응용프로그램의 디버깅 및 테스트 기능이 강화되었다.


"Windows Embedded Compact 7"은 최근의 IT 트렌드 및 임베디드 시장의 변화에 맞춰 변화되고 있다. 일부 시대를 앞서 가는 부분도 있지만 그렇지 못한 부분도 다소 있다. 하지만 분명한 사실은 "Windows Embedded Compact 7"이 임베디드 OS 라는 것이며 모바일 환경과의 애매모호한 격차를 줄이기 위해 상당히 노력했다는 것이다.


범용적 기능을 수용하고 있는 현재의 모바일 기기와 전용적 기능만을 갖고 있는 임베디드 시스템 사이에서 "Wind ows Embedded Compact 7"이 어느 쪽으로 더 치우쳐 있는지 모르겠지만 강조하고 싶은 것은 분명 "임베디드 시장"과 모바일 시장을 이끈 선구자중 하나라는 점이다.

지금까지 "Windows Embedded Compact 7"에서 달라진 주요 특징들을 확인해 보았다. 다음 기고에는 실제 타겟 보드를 이용하여 OS의 포팅 과정을 다루도록 하겠다. 위에서 언급한 이번 Windows Embedded Compact 7 커널의 가장 큰 특징인 SMP 지원에 있어서 SMP 포팅 방법, SMP에 관련된 API 를 이용한 어플리케이션 작성 방법에 대해서 알아보겠다.

또한 향상된 메모리 매니저를 이용하여 기존 버전의 메모리 한계였던 512MB 이상의 메모리 포팅 방법에 대해서도 알아보겠다. 그 밖에 Window Embedded Compact 7 에서 기능적으로 어떤 부분이 향상 되었는지 상세하게 알아볼 예정이다.


필 / 자 / 소 / 개




마이크로소프트 MVP로 MDS테크놀로지에서 윈도우 임베디드 기술지원을 맡고 있다. 마이크로소프트 임베디드 세미나와 개인 블로그(http://blog.naver.com /jay_korea)를 통해 '윈도우 임베디드 기술 전도사'로서 활약하고 있다.

윈도우임베디드 솔루션 : www.embedsolution.com
윈도우 임베디드 개발자 커뮤니티 : www.iwecom.co.kr 


    김재형 팀장

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지