목차

I부 기본편

1장 Windows CE 소개 
  1.1 Windows CE 둘러보기
  1.2 Windows CE의 역사
  1.3 Windows CE를 사용하는 이유
  1.4 Windows CE에서 사용하는 프로그래밍 언어
  1.5 Windows CE v5.0의 새로은 기능

2장 플랫폼 빌더
  2.1 플랫폼 빌더에 대하여 배우기에 앞서
    2.1.1 폴더의 정의
    2.1.2 자주 나오는 용어 정의
  2.2 플랫폼 빌더를 사용하여 이미지를 생성하는 단계
    2.2.1 명령 프롬프트 창에서 이미지를 생성하는 고전적인 절차
    2.2.2 모듈 빌드
    2.2.3 플랫폼 빌더 IDE 상에서 메뉴를 통해 Windows CE용 이미지를 생성하는 과정
  2.3 플랫폼을 생성해 플랫폼 빌더의 사용방법을 익히자
    2.3.1 플랫폼 생성
    2.3.2 Windows CE 이미지파일(NK.BIN) 생성하기
    2.3.3 빌드된 NK.BIN 파일을 에뮬레이터로 다운로드해보자
  2.4 Windows CE를 위한 호스트 시스템과 타겟 시스템의 연결
    2.4.1 플랫폼 매니저가 지원하는 툴들
    2.4.2 CETarget에 의해 제공되는 툴들
    2.4.3 커널 디버깅 기능
  2.5 Windows CE 이미지 생성을 위한 구성파일
    2.5.1 REG
    2.5.2 DAT
    2.5.3 DB
    2.5.4 BIB
  2.6 플랫폼 빌더가 제공하는 유용한 툴, CEC Editor
    2.6.1 CEC 에디터 사용하기
    2.6.2 플랫폼 빌더 상으로 작성한 CEC 파일을 임포트하기
  2.7 플랫폼 빌더 Component 프로젝트 생성
  2.8 플랫폼 빌더 Command Build 창 이용하기
  2.9 플랫폼 빌더로 생성되는 BIN 파일분석
    2.9.1 BIN 헤더부분
    2.9.2 RECORD 부분
    2.9.3 LAST RECORD 부분
  2.10 SAMPLE BSP 생성하기
 
3장 부트로더
  3.1 부트로더의 역할
  3.2 부트로더 작성을 위해 플랫폼 빌더가 제공하는 요소
    3.2.1 BLCOMMON의 BootLoaderMain() 함수
    3.2.2 BLCOMMON의 DownloadImage() 함수
  3.3 개발자가 작성해야 하는 부트로더 지원요소
    3.3.1 Sources 파일
    3.3.2 StartUp : startup.s
    3.3.3 BOOL OEMDebugInit(void) : main.c
    3.3.4 BOOL OEMPlatformInit(void) : main.c
    3.3.5 DWORD OEMPreDownload(void) : main.c
    3.3.6 BOOL OEMReadData(DWORD dwData, PUCHAR pData) : main.c
    3.3.7 void OEMShowProgress(DWORD dwPacketNum) : main.c
    3.3.8 LPBYTE OEMMapMemAddr(DWORD dwImageStart, DWORD dwAddr) : flash.c
    3.3.9 BOOL OEMIsFlashAddr(DWORD dwAddr) : flash.c
    3.3.10 BOOL OEMStartEraseFlash(DWORD dwStartAddr, DWORD dwLength) : flash.c
    3.3.11 void OEMContinueEraseFlash(void) : flash.c
    3.3.12 BOOL OEMFinishEraseFlash(void) : flash.c
    3.3.13 BOOL OEMWriteFlash(DWORD dwStartAddr, DWORD dwLength) : flash.c
    3.3.14 void OEMLaunch( 
        DWORD dwImageStart, 
        DWORD dwImageLength, 
        DWORD dwLaunchAddr, 
        const ROMHDR *pRomHdr ) : main.c
  3.4. 부트로더 만들기

4장 커널과 OAL 
  4.1 Windows CE 커널의 특징
    4.1.1 작업 스케줄링
    4.1.2 리소스 관리(메모리 관리)
  4.2 커널과 OAL 관계
  4.3 필수적인 구현이 필요한 OAL 함수들
    4.3.1 void StartUp(void)
    4.3.2 void OEMInitDebugSerial(void)
    4.3.3 void OEMInit(void)
    4.3.4 BOOL OEMGetExtensionDRAM(LPDWORD lpMemStart, LPDWORD lpMemLen)
    4.3.5 OEM Interrupt Service Routine
    4.3.6 BOOL OEMInterruptEnable (DWORD idInt, LPVOID pvData, DWORD cbData)
    4.3.7 void OEMInterruptDisable(DWORD idInt)
    4.3.8 void OEMInterruptDone(DWORD idInt)
    4.3.8 void OEMInterruptDone(DWORD idInt)
    4.3.10 BOOL OEMIoControl(DWORD IoControlCode
    4.3.11 ULONG SC_GetTickCount(void)
  4.4 커널인증을 위해서 준비해야 하는 OAL의 역할
    4.4.1 BIB 파일의 CONFIG 영역 수정
    4.4.2 BIB 파일의 MODULE 영역
    4.4.3 OEMInit() 함수 내의 작업
  4.5 파워관리 관련 OAL함수들
  4.6 커널 디버깅을 위한 OAL의 준비
    4.6.1 KITL을 사용하기 위한 준비작업(부팅과정)
    4.6.2 KITL 사용되는 과정
    4.6.3 플랫폼 빌더 5.0의 Kitl 구현을 지원하는 Common 요소들
  4.7 VBRIDGE를 사용한 네트워크 자원의 공유
 
5장 디바이스 드라이버
  5.1 디바이스 드라이버의 개요
    5.1.1 스트림 인터페이스 드라이버
    5.1.2 버스 인터페이스 드라이버
    5.1.3 네이티브 인터페이스 드라이버
    5.1.4 PDD
    5.1.5 미니포트 드라이버
  5.2 스트림 인터페이스 드라이버 DDI
    5.2.1 디바이스 드라이버 등록/해제와 관련된 함수
    5.2.2 디바이스 드라이버에게 전달되는 관련 함수
    5.2.3 응용프로그램과 통신하는 함수
    5.2.4 스트림 인터페이스 드라이버 작성을 위해 필요한 요소들
    5.2.5 비동기 명령 처리에 대해
  5.3. 버스 인터페이스 드라이버
    5.3.1 클라이언트 드라이버를 위한 버스 드라이버의 서비스
    5.3.2 버스 드라이버가 클라이언트 드라이버를 로딩하는 방법
  5.4 네이티브 인터페이스 드라이버
  5.5 PDD
  5.6 미니포트 드라이버
  5.7 하드웨어 인터럽트 서비스 스레드 구현방법
  5.8 Installable ISR
 
6장 디바이스 드라이버 응용
  6.1 간단한 스트림 인터페이스 드라이버
    6.1.1 구현 목적
    6.1.2 동작하는 개념도
    6.1.3 드라이버를 생성하기 위해 필요한 파일과 빌드방법
    6.1.4 드라이버, 응용프로그램 소스파일 및 보조파일 분석
    6.1.5 설치방법 고찰
  6.2 시리얼 디바이스 드라이버
    6.2.1 동작원리
    6.2.2 MDD 관점에서 드라이버 개발하기
    6.2.3 PDD 관점에서 드라이버 개발하기
    6.2.4 mini-PDD 관점에서 드라이버 개발하기
  6.3 네트워크 디바이스 드라이버
    6.3.1 동작원리
    6.3.2 드라이버 소스파일 분석
  6.4 오디오 디바이스 드라이버
    6.4.1 동작원리
    6.4.2 소스파일 분석
  6.5 디스플레이 디바이스 드라이버
    6.5.1 동작원리
    6.5.2 드라이버의 생성과 설치방법
  6.6 터치판넬 디바이스 드라이버
    6.6.1 동작원리
    6.6.2 PDD 형식을 사용해 터치스크린 드라이버 작성하기
  6.7 파일시스템 디바이스 드라이버
    6.7.1 동작원리
    6.7.2 샘플 파일시스템 소스와 설치 방법
  6.8 USB 디바이스 드라이버
    6.8.1 USB 디바이스 드라이버의 종류
    6.8.2 호스트 관점에서 개발돼야 하는 드라이버
    6.8.3 슬레이브 관점에서 개발돼야 하는 드라이버
  6.9 기본편을 마치면서
    
    

II부 응용편
 
7장 개발환경 구축
  7.1 요구사항
  7.2 Windows CE v5.0 플랫폼 빌더 설치하기
  7.3 시스템의 환경설정
  7.4 개발 절차

8장 타겟 시스템의 개요
  8.1 ARM 개요
    8.1.1 ARM이란?
    8.1.2 ARM의 특징
    8.1.3 ARM의 구조
    8.1.4 프로그래머스 모델
    8.1.5 예외처리
    8.1.6 ARM 명령어
  8.2 타겟 시스템(2410TK)의 개요
    8.2.1 삼성 S3C2410의 개요
    8.2.2 S3C2410의 특징
    8.2.3 2410TK 보드의 개요
  8.3 2410TK 보드 테스트
    8.3.1 환경설정
    8.3.2 2410TK 보드의 기능 테스트

9장 2410TK 보드에 Windows CE 포팅
  9.1 포팅 준비
    9.1.1 BSP 구성하기
    9.1.2 EBOOT 구현
  9.2 커널 동작과정
    9.2.1 OAL이란?
    9.2.2 OAL 작성
    9.2.3 OAL 기본함수 작성
    9.2.4 OAL 추가함수 작성
  9.3 커널 올리기
    9.3.1 BSP 복사하여 치워두기
    9.3.2 BSP 등록하기
  9.4 KITL을 이용한 디버깅

10장 디바이스 드라이버 만들기
  10.1 간단한 디바이스 드라이버 만들기
  10.2 인터럽트를 이용한 디바이스 드라이버 만들기
  10.3 KITL을 이용한 디바이스 드라이버 디버깅
  10.4 드라이버 테스트

11장 Windows CE의 플랫폼 만들기
  11.1 Tiny Kernel 플랫폼

12장 Windows CE용 애플리케이션 만들기
  12.1 애플리케이션 개발을 위한 SDK 만들기
  12.2 네이티브와 매니지드 애플리케이션 모델
  12.3 애플리케이션에서 직접 디바이스 제어하기
  12.4 사용자용 셸 만들기
  12.5 애플리케이션 탑재
  12.6 응용편을 마치면서

부록 ARM 명령어 SET