http://wecom.dstcorp.com/CE/guide01_in.asp WindowsCE Overview 에 있는 내용을 발췌했다.

Windows CE 소개

Windows CE는 메모리를 적게 차지하는 차세대 스마트 모바일 기기를 신속하게 개발할 수 있는 가장 강력한 도구와 32 Bit Real-Time Embedded 운영 체제를 지원합니다.다양한 RISC CPU기반의 H/W Platform에서 운영이 가능하며, 기존 Desktop Windows OS 의 Application Programming Interface와의 호환성을 지속하므로 응용 프로그램 엔지니어의 개발 부담감을 최소화 합니다. 또한 최신의 멀티미디어 환경과 인터넷 환경을 제공하여 포터블 미디어, 인터넷 단말장치의 개발을 가능하게 합니다.

Windows CE 5.0에서는 이미 포함 되어 있는 Device Driver의 품질 수준을 상당히 보완했으며, 네트워킹 성능의 현저한 개선, 개발자 생산성 향상을 위한 60개 이상의 드라이버, 디바이스 성능의 원격 관리 기능 및 Direct 3D Mobile을 통한 고화질 게임 프로그램 환경 등을 제공합니다.
Windows CE 5.0은 마이크로소프트의 향상된 최신 실시간 운영 체제로서 소비자 전자 제품, 게이트웨이, 산업용 컨트롤러, 모바일 휴대폰 기기, 셋톱박스, 인터넷 전화(VOIP), 씬클라이언트(Thin Client) 등과 같이 다양한 혁신적 초 경량 디바이스를 신속하게 개발할 수 있도록 합니다.

Windows CE 의 특징

Windows CE는 다음과 같은 4개의 마이크로프로세서 core 및 에뮬레이션 기술을 지원함으로써 고급 디자인 및 프로세서 유연성을 제공합니다.

  1. ARM : ARM920T, ARM1020T, PXA25x, PXA27x(XScale), Samsung ARM .
  2. MIPS : MIPS II/32,MIPS II/32,MIPS16,MIPS IV/64,MIPS IV/64.
  3. SHx : SH-3, SH-4 (Windows CE 5.0은 SH-4만 지원합니다.)
  4. X86 : 486, 586, Geode, VIA, Pentium I/II/III/IV

Windows CE는 제품에 필요한 기능만을 선택하여 OS의 크기를 최적화할 수 있도록 module화된 운영체제로 설계 되었으며, OEM은 원하는 기능의 필요한 component 만을 선택하여 다양한 환경의 Windows CE OS를 design 할 수 있습니다.

Windows CE는 여러 가지 범위의 유/무선 연결을 지원하는 Mobile 장치를 만들 수 있도록, Bluetooth나 802.11x를 포함하는 PAN, LAN, Wireless/Wired Networking 환경을 지원합니다.

  1. Wireless LAN - Wi-Fi (Native 802.11)
  2. Bluetooth: SDIO support, new profile support: PAN, Headset, HID
  3. New IPv6 service support
  4. Real-time communications support
  5. Windows Messenger 5.0 지원: multiple points of presence (MPOP)
  6. Remote Desktop Protocol (RDP): RDP 5.5 지원

Windows CE는 low-latency, Hard Real-Time Kernel을 통해 대부분의 실시간 장치에서 안정된 실시간 동작을 효과적으로 제공할 수 있는 시스템 서비스를 지원합니다.

최신 Windows Media 9 Series CODEC 및 컨트롤을 지원함으로써 고 충실도, 저대역으로 Encoding된 멀티미디어 스트림을 지원합니다.
또한 Windows CE는 게임이나 다른 고성능 멀티미디어 응용 프로그램을 작성하기 위한 저급 응용 프로그래밍 인터페이스(API) 집합인 DirectX 8를 지원합니다.

  1. Direct3D Mobile: COM-based D3D programming model built on DirectX 8
  2. Graphics Device Interface (GDI)기능 향상
  3. Display drivers 추가 (Silicon Motion Cougar, ATI Rage XL, Single Flat driver)
  4. Still image support
  5. Single library to support still image codecs (JPG, GIF, PNG, TIFF, BMP and ICO)
  6. Updating Windows Media codecs to support
  7. WMA Pro, WMA Lossless, WMV Advanced Profile (Broadcast)

Target H/W platform 없이 워크스테이션에서 OS 디자인을 작성 및 테스트할 수 있는 에뮬레이션 기술이 포함되어 있습니다.

  1. Visual Studio .NET : 일관된 프로그램 모델과 빠른 출시가 중요한 경우, 개발자는 Visual Studio. NET이 지원하는 풍부한 언어 집합을 사용하여 관리가 가능한 Windows CE 용 프로그램을 작성할 수 있습니다.(Visual C#, Visual Basic .NET)
  2. eMbedded Visual C++ : 정교한 응용 프로그램 및 시스템을 control할 수 있는 Native Code 기반의 application을 개발할 수 있습니다.

원래 Pocket PC 2002용으로 작성된 응용 프로그램을 일반 Windows CE의 표준 Windows Shell에서도 사용가능 하게하는 API를 제공하는 기능입니다.
Windows CE 장치용으로 작성된 응용 프로그램은 Pocket PC 2000, 2002, 2003과 같이, 다른 Windows CE 기반 장치와의 뛰어난 응용 프로그램 호환성을 갖습니다. (각 장치의 H/W 구성이 동일한 경우)

IE 6.0 기반의 Windows CE용 Internet Explorer Browser가 포함 되어 있으며 Blocking pop-up 과 RPC, TV lens 기능을 지원합니다.

12개국의 언어 관련 font와 IME를 지원합니다. (ex: 한국어, 중국어, 일본어, 영어 등) MUI(Multilingual User Interface)를 지원하며, Windows CE 5.0에서는 동 아시아권 국가의 언어만을 이용하여 MUI의 구현이 가능합니다.
Windows CE 5.0은 중동 지역 몇 개 국어의 font를 지원하고, Complex script를 지원하여 오른쪽부터 시작하는 문자의 display가 가능 합니다.

Intel의 최신 CPU인 PXA27x용 BSP(Intel Mainstone II)가 추가 되었습니다. 그 동안 Windows CE .NET 에서 많이 사용되어 왔던 PXA25x Processor의 BSP는 포함 되어 있지 않습니다.
다만, CSP(CUP Support Package)안에 관련 driver들이 포함되어 있기 때문에 필요에 따라 이 driver들을 사용하여 포팅할 수 있습니다.

Windows CE 의 구조

Windows CE의 Kernel은 'NK.EXE (New Kernel)라는 component' 가 됩니다.
Kernel의 주요 역할은 Memory 관리, 스케줄링, Win32 API지원을 수행하며 Micro-Kernel구조를 통해 PSL(Protected Server Library)를 구현 합니다. Microsoft는 개발자가 Kernel의 porting을 최소화 하기 위해, 주요 Kernel의 기능을 별도의 library file에 담아 준비 하였으며, H/W또는 CPU에 관련된 porting만을 개발자에게 부담하도록 하였습니다.

주요 Kernel의 기능을 갖춘 library는 'NK.lib' 가 되며 H/W또는 CPU에 관련된 library는 'OAL.lib' 가 됩니다. OAL(OEM Adaptation Layer)는 다양한 H/W에 Windows CE Kernel이 운영될 수 있도록 H/W와 Kernel의 중간에 위치한 layer로써, 반드시 OEM(개발자)이 H/W에 맞게 porting해 주어야 하는 layer입니다.

Interrupt, Debugging, Clock & Timer, Power Management의 초기화 및 제어의 역할을 수행하게 됩니다. 최종적으로 Microsoft가 제공한 'NK.lib' 와 개발자가 porting한 'OAL.lib' 가 링크 되어 'NK.EXE' 가 생성됩니다.
'NK.LIB + OAL.LIB = NK.EXE'

다음은 Windows CE 5.0에 새롭게 달라진 Kernel의 기능입니다.

  1. Shared Heap Memory
    개발자가 원하는 Heap memory function을 사용할 수 있습니다. 이를 통해서 OS가 인식하지 않는 또는 개발자가 원하는 별도의 RAM에 memory heap을 구성할 수 있습니다.
  2. Watchdog timer
    Application의 holding 상태를 감지하여 해당 Application을 다시 reboot하는 기능입니다.
  3. 64 시스템 interrupts
    기존 32개만 사용할 수 있었던 Interrupt가 64개로 늘어났습니다.
  4. Power down thread
    이전 버전에서는 Power Handler와 관련한 function에 어떠한 API도 사용할 수 없었는데, Windows CE 5.0에서는 이 부분에 대한 API를 사용할 수 있게 됨으로써 PM (Power Management)쪽 디버깅 및 일부 API사용이 가능하게 되었습니다.
  5. Embedded database (EDB)
    SQL Server CE 3.0을 지원합니다.(이전 SQL Server CE2.0)
  6. ATAPI enhancements
    보다 향상된 기능의 ATAPI Driver를 지원합니다.

Windows CE의 File 시스템 Manager의 역할은 굉장히 중요합니다. 'FILESYS.EXE' 라는 component가 됩니다. Windows CE 시스템의 ROM, RAM File 시스템 과 외부 저장 장치의 File 시스템 관리를 하며, 시스템 registry 및 Data Base의 관리도 담당을 합니다.

  1. Object Store
    Object Store는 일반 Desktop Windows OS의 HDD와 같은 역할로써 시스템 Registry, Data Base, RAM File 시스템으로 구성이 됩니다. 특정 file을 비 휘발성 외부저장 장치에 저장하지 않은 경우 file은 Object Store에 저장이 되며 Object Store는 RAM에 위치 하므로 시스템의 전원이 꺼지거나, cold booting시에 file이 지워지게 됩니다. Root폴더로 사용되고, Windows CE의 Root폴더는 Desktop Windows OS와는 달리 '\' 로 표현 됩니다. (Desktop Windows OS는 'C:\' , 'D:\' 로 표현됩니다.)
  2. Registry
    일반 Desktop Windows OS와 같은 형식의 registry를 사용합니다. registry는 시스템 과 Application의 주요 setting 정보를 담고 있습니다.
  3. ROM File 시스템
    Windows CE OS binary image인 'NK.bin' 에 포함되어있는 Windows CE를 구성하는 component들을 File로 다루기 위한 File 시스템 입니다. Windows CE상에서 탐색기를 열었을 때 'Windows' 폴더에 들어있는 여러 component file들이 ROM-File 시스템을 통해 사용됩니다. (Booting 환경에 따라 달라질 수 있습니다.)
  4. Storage Manager
    외부저장 장치에 대한 File 시스템 manager입니다. Windows CE는 다양한 외부저장 장치에 대해서, 여러 개의 partition과 다양한 File 시스템 (FAT12, FAT16, FAT32, BinFS)을 사용할 수 있습니다. 저장 장치를 'Block Device' 라고 부릅니다.

Windows CE의 Device Driver들은 Native Driver 와 Stream Interface Driver 형태로 나뉘어 사용됩니다.

  1. Native Driver
    Built-In Device Driver들이 해당되며, OS를 운영하기 위해서 반드시 필요한 Device Driver들로 구성됩니다. native driver들은 'GWES.EXE'(Graphic Windowing Event Subsystem)가 load 및 관리를 합니다. 종류로는 Display, Key Board, Mouse, Touch driver들이 해당됩니다.
  2. Stream Interface Device Driver
    Windows CE에서 device를 access하는데 가장 이상적인 Driver Model 입니다. Application을 위한 Device Driver 들로 구성되며, application에서는 해당 driver들을 File API를 통해서 하나의 file처럼 다루어 사용됩니다. 모든 device에 공통적인 interface를 사용하여 제작 되고 'DEVICE.EXE' 라는 Device Driver Manager가 load 및 관리합니다. 종류로는 Serial, Block Device Driver, Audio, Custom driver들이 해당됩니다.
  3. Windows CE 5.0 은 PQD(Production quality drivers) 라 불리는 양산수준의 품질을 보장하는 Device Driver 를 포함하고 있습니다. 그 외, USB 2.0 host and function, SDIO host, PC card 를 지원합니다.

  1. Windows CE Device에 전원이 공급 되어 CPU가 동작을 시작하게 되면 Windows CE Kernel (NK.exe)이 가장 먼저 실행됩니다.
  2. Kernel은 OAL의 여러 함수들을 호출하여, 시스템의 초기화 작업을 수행하게 됩니다.
  3. 기본적인 시스템의 초기화가 완료되면 Kernel은 File 시스템 Manager인 Filesys.exe를 호출하여 실행합니다
  4. File 시스템 Manager는 Object Store를 DRAM에 구현하게 되며, 가장 중요한 시스템 Registry를 설치하게 됩니다.
  5. Kernel은 Registry에 등록되어 있는 'LaunchXX' setting값에 의하여 다음에 실행할 component를 호출하여 load하게 됩니다.
  6. 이들 호출의 순서는 Default로 'Device Manager' (Device.exe) → 'GWES Manager' (GWES.exe) → 'UI Shell' (Explorer.exe)등의 순서를 가집니다.
  7. 이 때 Device Manager는 Registry를 통해 load할 driver들을 확인한 후 정의된 순서에 의해서 Device Driver들을 load 합니다. 물론 GWES Manager또한 자신이 load해야 할 Device Driver들을 load합니다.
  8. Explore.exe가 Windows CE의 기본 UI Shell이 되며 이 UI Shell을 통해서 사용자는 응용 프로그램을 실행할 수가 있습니다.
  9. OEM(개발자)은 시스템 Registry의 수정으로 위의 boot flow를 변경할 수가 있습니다.

  1. Windows CE는 Micro-Kernel Architecture를 가집니다. Kernel을 지원하는 여러 시스템 Library를 사용하여 Kernel의 부하를 최소한을 줄이고 인터넷 및 멀티 미디어와 같은 다양한 service를 제공합니다.
  2. 앞의 그림은 Micro-Kernel구조의 시스템에서 특정 작업을 수행하는 과정을 보여 줍니다. Application에서 File을 접근하는 API(CreateFile)를 호출 했을 때 Kernel을 통하여, File을 access하는 File 시스템 manager 와 Block Device를 관리하는 Device Manager까지의 이동 경로를 보여 줍니다.
  3. Kernel을 지원하여 여러 가지 service를 제공하는 File system Manager, Device Manager, GWES Manager등을 PSL 이라고 부릅니다.

Windows CE 의 다양한 Booting 환경

Embedded 시스템은 XIP(eXecute In Place)가 되어야 하는 기본 조건이 있습니다.
XIP는 CPU가 OS를 Flash(NOR)나 ROM으로부터 직접 읽어와 실행하는 것을 의미 합니다.
위의 화면은 XIP의 구조를 보여 줍니다. 이 경우 사용해야 하는 Windows CE OS Binary Image는 'NK.nb0' 입니다.
이 환경의 장점과 단점은 다음과 같습니다.

  1. 압축되지 않은 OS image를 Flash에서 직접 실행할 수 있다.
  2. 많은 량의 DRAM을 요구하지 않는다.
  3. Booting시간이 빠르다.
  4. SDRAM에 비해서 저 전력
  1. OS의 Performance 가 느리다.
  2. OS update를 할 수 없다.

위의 화면은 Boot Loader를 사용하여 OS Image를 RAM으로 복사하여 사용하는 구조 입니다. Flash나 ROM에는 OS Image를 booting하기 위한 Boot Loader가 필요하며, 이때 사용하는 Windows CE OS Binary Image는 'NK.bin' 입니다.
이 환경의 장점과 단점은 아래와 같습니다.

  1. DRAM에서 OS가 운영 되므로 Performance가 빠르다.
  2. OS Image의 update를 할 수가 있다.
  3. OS Binary Image size가 XIP환경보다 적다.
  1. OS Image를 DRAM에 모두 copy
  2. XIP환경에 비하여 많은 DRAM의 공간을 요구한다.
  3. Booting time이 길어 진다.
  4. XIP환경(Flash, ROM)환경에 비하여 고전력이다.

Multiple XIP환경은 OS Image의 update를 효과적으로 하기 위한 환경입니다.
Windows CE OS Binary Image인 'NK.bin' 을 다수의 Binary Image file로 분리하여 구성합니다.
이 환경의 Boot Loader는 여러 개의 OS Binary Image를 모두 DRAM에 copy하여야 합니다.
이 환경의 장점과 단점은 아래와 같습니다.

  1. DRAM에서 OS가 운영 되므로 Performance가 빠르다.
  2. OS Image의 부분적인 update를 할 수가 있다.
  1. OS Image를 DRAM에 모두 copy
  2. XIP환경에 비하여 많은 DRAM의 공간을 요구한다.
  3. Booting time이 길어 진다.
  4. XIP환경(Flash, ROM)환경에 비하여 고전력이다.

BINFS환경은 Multiple XIP환경의 단점을 보완한 환경입니다.
Multiple XIP환경과 같이 다수개의 OS Binary Image로 구성 되지만, Boot Loader는 모든 Binary Image를 DRAM에 copy하지 않고, BINFS와 Demand Paging이 가능한 Kernel 영역 의 Binary (Bin Region 1)만 DRAM에 copy합니다.
이후 Kernel은 필요한 component들을 BIN File 시스템을 통하여 Flash로부터 읽어와 OS를 Booting 합니다.
Binary File 시스템이란, Platform Builder가 생성한 Windows CE OS Binary Image인 'NK.bin' 안에 구성된 여러 component들을 파일 단위로 access할 수 있는 File 시스템입니다.
이 환경의 장점과 단점은 아래와 같습니다

  1. 요구된 component(Demand Paging)만 RAM에 load하므로 RAM을 효율적으로 사용할 수 있다.
  2. 일반 NAND Booting 환경에 비하여 Booting time이 빠르다.
  1. OS image update를 위한 padding이 필요하다.

앞에서 Windows CE의 다양한 Booting환경을 확인해 보았습니다.
Boot Loader를 필요로 하는 환경과 그렇지 않은 환경을 비교 했을 때, 사용하는 Windows CE OS Binary Image가 다릅니다.
위의 그림은 두 가지 형태의 Windows CE OS Binary Image인 'NK.bin' 과 'NK.nb0' 의 차이점을 보여 줍니다.

'NK.bin' 은 OS image의 여러 정보를 포함하고, OS를 구성하는 component들을 Record 별로 나누어 구성된 Binary Image 입니다.
그러므로 CPU가 실행 할 수 있는 유효 code들을 분리해 주는 Boot Loader가 필요합니다.
반면 'NK.nb0' 의 경우 CPU가 실행할 수 있는 유효 code들 만으로 구성된 Binary Image 이기 때문에 대부분 Boot Loader가 필요하지 않은 XIP 환경에서 사용 됩니다.

  • computer/rtcclab/windows_ce_이해.txt
  • Last modified: 4 years ago
  • by likewind