Xeno's Study Blog (http://XenoStudy.tistory.com)
- 글쓴이 : xeno
- 출처 : 나 + 인터넷에 여기저기 돌아당기는자료들...
- 기타사항 : 틀린사항은 댓글로 달아주세여~
winCE의 기본용어 설명과 아주 기초적인 내용에대해 스터디..
.. 시작!!
Windows CE의 구조
Kernel
Windows CE의 kernel은 “NK.EXE” (New Kernel)라는 컴포넌트가 된다.
Kernel의 주요 역할은 Memory관리, 스케줄링, Win32 API지원을 수행하며 Micro-kernel 구조를 통해 PSL(Protected Server Library)를 구현 한다. 마이크로소프트는 개발자가 커널의 포팅을 최소화 하기 위해, 주요 커널의 기능을 별도의 라이브러리 파일에 담아 준비 하였으며, 하드웨어 또는 CPU에 관련된 포팅만을 개발자에게 부담하도록 하였다. 주요 커널의 기능을 갖춘 라이브러리는 “NK.lib”가 되며 하드웨어 또는 CPU에 관련된 라이브러리는 “OAL.lib”가 된다.
OAL(OEM Adaptation Layer)
OAL(OEM Adaptation Layer)는 다양한 하드웨어에 Windows CE Kernel이 운영될 수 있도록 하드웨어와 커널의 중간에 위치한 layer로써, 반드시 OEM(개발자)이 하드웨어에 맞게 포팅해 주어야 하는 layer이다. 인터럽트, 디버깅, Clock & Timer, Power Management의 초기화 및 제어의 역할을 수행하게 된다. OAL 관련 라이브러리는 “OAL.lib” 가 된다.
최종적으로 마이크로소프트가 제공한 “NK.lib”와 개발자가 포팅한 “OAL.lib”가 링크되어 “NK.EXE”가 생성된다.
==>NK.LIB + OAL.LIB = NK.EXE
Windows CE 5.0에 새롭게 달라진 커널의 기능
- .Shared Heap Memory
- 개발자가 원하는 heap memory function을 사용할 수 있다. 이를 통해서 OS가 인식하지 않는
또는 개발자가 원하는 별도의 RAM에 memory heap을 구성할 수 있다. - .Watchdog timer
- Application의 holding 상태를 감지하여 해당 Application을 다시 reboot하는 기능이다. - .64 system interrupts
- 기존 32개만 사용할 수 있었던 Interrupt가 64개로 늘어났다. - .Power down thread
- 이전 버전에서는 Poser Handler와 관련한 function에 어떠한 API도 사용할 수 없었는데, WinCE 5.0에서는 이 부분에 대한 API를 사용할 수 있게 됨으로써 PM(Power Management)쪽 디버깅 및 일부 API 사용이 가능하게 되었다. - .Embedded database (EDB)
- SQL Server CE 3.0을 지원한다 (이전 SQL Server CE2.0) - .ATAPI enhancements
- 보다 향상된 기능의 ATAPI Driver를 지원한다.
File System Manager
Windows CE의 File system Manager의 역할은 굉장히 중요하다. “FILESYS.EXE”라는 component가 된다. Windows CE system의 ROM, RAM File system과 외부 저장장치의 File system관리를 하며, System registry 및 Data Base의 관리도 담당을 한다.
- .Object Store
- Object Store는 일반 Desktop Windows OS의 HDD와 같은 역할로서 System Registry, Data Base,
RAM File System으로 구성이 된다. 특정 file을 비 휘발성 외부저장장치에 저장하지 않은 경우file은 Object Store에 저장이 되며, Object Store는 RAM에 위치하므로 System의 전원이 꺼지거나, cold booting시에 file이 지워지게 된다. Root폴더로 사용되고, Windows CE의 Root폴더는 Desktop Windows OS와는 달리 “\”로 표현 된다. (Desktop Windows OS는 “C:\”, “D:\”로 표현된다.) - .Registry
- 일반 Desktop Windows OS와 같은 형식의 registry를 사용한다. Registry는 System과 Application의 주요 setting 정보를 담고 있다. - .ROM File System
- Windows CE OS binary image인 “NK.bin”에 포함되어있는 Windows CE를 구성하는 component들을 File로 다루기 위한 File System이다. Windows CE상에서 탐색기를 열었을 때 “Windows” 폴더에 들어있는 여러 component file들이 ROM-File system을 통해 사용된다. (Booting 환경에 따라 달라질 수 있다) - .Storage Manger
- 외부저장장치에 대한 File system manager 이다. Windows CE는 다양한 외부저장장치에 대해서,
여러 개의 partition과 다양한 File system (FAT12, FAT16, FAT32, BinFS)을 사용할 수 있다. 저장장치를 “Block Device”라고 부른다.
DEVICE & GWES
Windows CE의 Device Driver들은 Native Driver와 Stream interface Driver 형태로 나뉘어 사용된다.
- .Native Driver
- Built-in Device Driver들이 해당되며, OS를 운영하기 위해선 반드시 필요한 Device Driver들로 구성된다. Native driver들은 “GWES.EXE” (Graphic Windowing Event Subsystem)가 load 및 관리를 한다. 종류로는 Display, Key board, Mouse, Touch driver들이 해당된다. - .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들이 해당된다.
- Windows CE 5.0은 PQD(Production quality drivers)라 불리는 양산수준의 품질을 보장하는 Device Driver를 포함하고 있다. 그 외, USB 2.0 host and function, SDIO host, PC card를 지원한다.
Windows CE Boot Flow
- Windows CE 디바이스에 전원이 공급되어 CPU가 동작을 시작하면 Windows CE Kernel (NK.exe)이 가장 먼저 실행된다.
- Kernel은 OAL의 여러 함수들을 호출하여, System의 초기화 작업을 수행하게 된다.
- 기본적인 system의 초기화가 완료되면 Kernel은 File system Manager인 Filesys.exe를 호출하여 실행한다.
- File system Manger는 Object store를 DRAM에 구현하게 되며, 가장 중요한 System Registry를 설치하게 된다.
- Kernel은 Registry에 등록되어 있는 “LaunchXX” setting값에 의하여 다음에 실행할 component를 호출하여 load하게 된다.
이들 호출의 순서는 default로 “Device Manger”(Device.exe) -> “GWES Manager”(GWES.exe) ->“UI Shell” (Explorer.exe) 등의 순서를 갖는다. 이때 Device Manger는 Registry를 통해 load할 driver들을 확인한 후 정의된 순서에 의해서 Device Driver들을 load 한다. 물론 GWES Manager 또한 자신이 load해야 할 Device Driver들을 로드한다. - Explore.exe가 Windows CE의 기본 UI Shell이 되며 이 UI Shell을 통해서 사용자는 응용 프로그램을 실행할 수가 있다.
- OEM(개발자)은 System Registry의 수정으로 위의 boot flow를 변경할 수 있다.
Micro-Kernel Architecture (Protected Server Library)
Windows CE는 Micro-Kernel Architecture를 가진다.
Kernel을 지원하는 여러 시스템 라이브러리를 사용하여 Kernel의 부하를 최소한을 줄이고 인터넷 및 멀티미디어와 같은 다양한 서비스를 제공한다.
Micro-Kernel 구조의 system의 특정작업을 수행하는 과정은 Application에서 File을 접근하는 API(CreateFIle)을 호출 했을 때 Kernel을 통하여, File을 access하는 File system manager와 Block Device를 관리하는 Device Manger까지의 이동하게 된다.
- Kernel을 지원하여 여러 가지 service를 제공하는 File system manager, Device Manger, GWES Manager등을 PSL이라고 부른다.
Windows CE의 다양한 Booting 환경
- XIP 환경
Embedded System은 XIP(eXecute In Place)가 되어야 하는 기본조건이 있다. XIP는 CPU가 OS를 Flash(NOR)나 ROM으로부터 직접 읽어와 실행하는 것을 의미한다. 위의 화면은 XIP의 구조를 보여준다. 이 경우 사용해야 하는 Windows CE OS Binary Image는 “NK.nb0” 이다.
1. 장점
- 압축되지 않는 OS 이미지를 Flash에서 직접 실행할 수 있다.
- 많은 양의 DRAM을 요구하지 않는다.
- Booting시간이 빠른다.
- SDRAM에 비해서 저전력
2. 단점
- OS Performance가 느리다.
- OS update를 할 수 없다. - Load from NAND or NOR into RAM
Flash나 ROM에는 OS Image를 booting하기 위한 Boot Loader가 필요하며, 이때 사용하는 Windows CE OS Binary Image는 “NK.bin” 이다.
1. 장점
- DRAM에서 OS가 운영되므로 Performance가 빠른다
- OS Image의 update를 할 수가 있다.
- OS Binary Image size가 XIP환경보다 적다.
2. 단점
- OS Image를 DRAM에 모두 copy
- XIP 환경에 비하여 많은 DRAM의 공간을 요구한다.
- Booting time이 길어진다.
- XIP환경 (Flash, ROM) 환경에 비하여 고 전력이다. - Multiple XIP
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가 빠르다.
- OS Image의 부분적인 update를 할 수가 있다.
2. 단점
- OS Image를 DRAM에 모두 copy
- XIP 환경에 비하여 많은 DRAM의 공간을 요구한다.
- Booting time이 길어진다.
- XIP환경 (Flash, ROM) 환경에 비하여 고 전력이다. - Binary File System (BINFS)
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은 필요한 컴포넌트를 BIN File System을 통하여 Flash로부터 읽어와 OS를 부팅한다. Binary File System이란, Platform Builder가 생성한 Windows CE OS Binary Image인 “NK.bin” 안에 구성된 여러 component들을 파일 단위로 access할 수 있는 File system 이다.
1. 장점
- 요구된 component(Demand Paging)만 RAM에 load하므로 RAM을 효율적으로 사용할 수 있다.
- 일반 NAND Booting 환경에 비하여 Booting time이 빠른다.
2. 단점
- OS Image Update를 위한 padding이 필요하다.