목차 일부
추천의 글 ... 5
감수의 글 ... 6
저자 서문ㆍ소개 ... 8
들어가며 ... 22
1부 기본편
1 Windows CE 소개 ... 29
1.1 Windows CE 둘러보기 ... 30
1.2 Windows CE의 역사 ... 31
1.3 Windows CE를 사용하는 이유 ... 32
1.4 Wind...
더보기
목차 전체
추천의 글 ... 5
감수의 글 ... 6
저자 서문ㆍ소개 ... 8
들어가며 ... 22
1부 기본편
1 Windows CE 소개 ... 29
1.1 Windows CE 둘러보기 ... 30
1.2 Windows CE의 역사 ... 31
1.3 Windows CE를 사용하는 이유 ... 32
1.4 Windows CE에서 사용하는 프로그래밍 언어 ... 34
1.5 Windows CE v5.0의 새로운 기능 ... 35
2 플랫폼 빌더 ... 39
2.1 플랫폼 빌더에 대해 배우기에 앞서 ... 40
2.1.1 폴더 정의 ... 40
2.1.2 자주 나오는 용어 정의 ... 41
2.2 플랫폼 빌더를 사용해 이미지를 생성하는 단계 ... 42
2.2.1 명령 프롬프트 창에서 이미지를 생성하는 고전적인 절차 ... 45
2.2.2 모듈 빌드 ... 49
2.2.3 플랫폼 빌더 IDE 상에서 메뉴를 통해 Windows CE용 이미지를 생성하는 과정 ... 56
2.3 플랫폼을 생성해 플랫폼 빌더의 사용방법을 익히자 ... 58
2.3.1 플랫폼 생성 ... 58
2.3.2 Windows CE용 이미지파일(NK.bin) 생성하기 ... 63
2.3.3 빌드된 NK.bin 파일을 에뮬레이터로 다운로드해보자 ... 67
2.4 Windows CE를 위한 호스트 시스템과 타겟 시스템의 연결 ... 69
2.4.1 플랫폼 매니저가 지원하는 툴들 ... 70
2.4.2 CETarget에 의해 제공되는 툴들 ... 71
2.4.3 커널 디버깅 기능 ... 73
2.5 Windows CE용 이미지 생성을 위한 구성파일 ... 76
2.5.1 REG ... 77
2.5.2 DAT ... 78
2.5.3 DB ... 79
2.5.4 BIB ... 80
2.6 플랫폼 빌더가 제공하는 유용한 툴(CEC 에디터) ... 84
2.6.1 CEC 에디터 사용하기 ... 84
2.6.2 플랫폼 빌더 상으로 작성한 CEC 파일을 임포트하기 ... 89
2.7 플랫폼 빌더 Component 프로젝트 생성 ... 90
2.8 플랫폼 빌더 명령 프롬프트 창 이용하기 ... 92
2.9 플랫폼 빌더로 생성되는 BIN 파일 분석 ... 96
2.9.1 BIN 헤더부분 ... 97
2.9.2 레코드 부분 ... 99
2.9.3 마지막 레코드 부분 ... 101
2.10 SAMPLE BSP 생성하기 ... 102
3 부트로더 ... 109
3.1 부트로더의 역할 ... 110
3.2 부트로더 작성을 위해 플랫폼 빌더가 제공하는 요소 ... 112
3.2.1 BLCOMMON의 BootloaderMain() 함수 ... 116
3.2.2 BLCOMMON의 DownloadImage() 함수 ... 118
3.3 개발자가 작성해야 하는 부트로더 지원요소 ... 123
3.3.1 Sources 파일 ... 123
3.3.2 StartUp : startup.s ... 124
3.3.3 BOOL OEMDebugInit(void) : main.c ... 126
3.3.4 BOOL OEMPlatformInit(void) : main.c ... 127
3.3.5 DWORD OEMPreDownload(void) : main.c ... 132
3.3.6 BOOL OEMReadData(DWORD dwData, PUCHAR pData) : main.c ... 134
3.3.7 void OEMShowProgress(DWORD dwPacketNum) : main.c ... 134
3.3.8 LPBYTE OEMMapMemAddr(DWORD dwImageStart, DWORD dwAddr) : flash.c ... 135
3.3.9 BOOL OEMIsFlashAddr(DWORD dwAddr) : flash.c ... 137
3.3.10 BOOL OEMStartEraseFlash(DWORD dwStartAddr, DWORD dwLength) : flash.c ... 137
3.3.11 void OEMContinueEraseFlash(void) : flash.c ... 138
3.3.12 BOOL OEMFinishEraseFlash(void) : flash.c ... 138
3.3.13 BOOL OEMWriteFlash(DWORD dwStartAddr, DWORD dwLength) : flash.c ... 138
3.3.14 void OEMLaunch(DWORD dwImageStart, DWORD dwImageLength, DWORD dwLaunchAddr, const ROMHDR *pRomHdr) : main.c ... 140
3.4 부트로더 만들기 ... 143
4 커널과 OAL ... 147
4.1 Windows CE 커널의 특징 ... 148
4.1.1 작업 스케줄링 ... 148
4.1.2 리소스 관리(메모리 관리) ... 158
4.2 커널과 OAL 관계 ... 167
4.3 필수적인 구현이 필요한 OAL 함수들 ... 168
4.3.1 void StartUp(void) ... 170
4.3.2 void OEMInitDebugSerial(void) ... 172
4.3.3 void OEMInit(void) ... 174
4.3.4 BOOL OEMGetExtensionDRAM(LPDWORD lpMemStart, LPDWORD lpMemLen) ... 181
4.3.5 OEM 인터럽트 서비스 루틴 ... 182
4.3.6 BOOL OEMInterruptEnable(DWORD idInt, LPVOID pvData, DWORD cbData) ... 186
4.3.7 void OEMInterruptDisable(DWORD idInt) ... 190
4.3.8 void OEMInterruptDone(DWORD idInt) ... 192
4.3.9 OEMSetReal Time, OEMGetReal Time ... 193
4.3.10 BOOL OEMIoControl(DWORD IoControlCode LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned) ... 194
4.3.11 ULONG SC_GetTickCount(void) ... 199
4.4 커널인증을 위해서 준비해야 하는 OAL의 역할 ... 201
4.4.1 BIB 파일의 CONFIG 영역 수정 ... 201
4.4.2 BIB 파일의 MODULE 영역 ... 201
4.4.3 OEMInit() 함수 내의 작업 ... 202
4.5 전원관리 관련 OAL 함수들 ... 205
4.5.1 void OEMIdle(DWORD dwIdleParam) ... 207
4.5.2 void OEMPowerOff(void) ... 212
4.6 커널 디버깅을 위한 OAL의 준비 ... 217
4.6.1 KITL을 사용하기 위한 준비작업(부팅과정) ... 218
4.6.2 KITL 사용되는 과정 ... 224
4.6.3 플랫폼 빌더 5.0의 KITL 구현을 지원하는 Common 요소들 ... 228
4.7 VBRIDGE를 사용한 네트워크 자원의 공유 ... 233
5 디바이스 드라이버 ... 239
5.1 디바이스 드라이버의 개요 ... 240
5.1.1 스트림 인터페이스 드라이버 ... 240
5.1.2 버스 인터페이스 드라이버 ... 241
5.1.3 네이티브 인터페이스 드라이버 ... 241
5.1.4 PDD ... 242
5.1.5 미니포트 드라이버 ... 243
5.2 스트림 인터페이스 드라이버 DDI ... 243
5.2.1 디바이스 드라이버 등록/해제와 관련된 함수 ... 245
5.2.2 디바이스 드라이버에게 전달되는 파워명령 관련 함수 ... 253
5.2.3 응용프로그램과 통신하는 함수 ... 258
5.2.4 스트림 인터페이스 드라이버 작성을 위해 필요한 요소들 ... 266
5.2.5 비동기 명령 처리에 대해 ... 266
5.3 버스 인터페이스 드라이버 ... 270
5.3.1 클라이언트 드라이버를 위한 버스 드라이버의 서비스 ... 272
5.3.2 버스 드라이버가 클라이언트 드라이버를 로딩하는 방법 ... 286
5.4 네이티브 인터페이스 드라이버 ... 312
5.5 PDD ... 315
5.6 미니포트 드라이버 ... 326
5.7 하드웨어 인터럽트 서비스 스레드 구현방법 ... 327
5.8 Installable ISR ... 333
6 디바이스 드라이버 응용 ... 341
6.1 간단한 스트림 인터페이스 드라이버 ... 342
6.1.1 구현 목적 ... 342
6.1.2 동작하는 개념도 ... 342
6.1.3 드라이버를 생성하기 위해 필요한 파일과 빌드방법 ... 343
6.1.4 드라이버, 응용프로그램 소스파일 및 보조파일 분석 ... 347
6.1.5 설치방법 고찰 ... 353
6.2 시리얼 디바이스 드라이버 ... 358
6.2.1 동작원리 ... 359
6.2.2 MDD 관점에서 드라이버 개발하기 ... 365
6.2.3 PDD 관점에서 드라이버 개발하기 ... 371
6.2.4 mini-PDD 관점에서 드라이버 개발하기 ... 381
6.3 네트워크 디바이스 드라이버 ... 389
6.3.1 동작원리 ... 389
6.3.2 드라이버 소스파일 분석 ... 394
6.4 오디오 디바이스 드라이버 ... 415
6.4.1 동작원리 ... 415
6.4.2 소스파일 분석 ... 426
6.5 디스플레이 디바이스 드라이버 ... 434
6.5.1 동작원리 ... 434
6.5.2 드라이버의 생성과 설치방법 ... 449
6.6 터치패널 디바이스 드라이버 ... 454
6.6.1 동작원리 ... 454
6.6.2 PDD 형식을 사용해 터치패널 드라이버 작성하기 ... 460
6.7 파일시스템 디바이스 드라이버 ... 464
6.7.1 동작원리 ... 464
6.7.2 샘플 파일시스템 소스와 설치 방법 ... 468
6.8 USB 디바이스 드라이버 ... 479
6.8.1 USB 디바이스 드라이버의 종류 ... 479
6.8.2 호스트 관점에서 개발돼야 하는 드라이버 ... 480
6.8.3 슬레이브 관점에서 개발돼야 하는 드라이버 ... 489
6.9 기본편을 마치면서 ... 499
2부 응용편
7 개발환경 구축 ... 503
7.1 요구사항 ... 504
7.2 Windows CE v5.0 플랫폼 빌더 설치하기 ... 506
7.3 시스템의 환경설정 ... 507
7.4 개발 절차 ... 509
8 타겟 시스템의 개요 ... 511
8.1 ARM 개요 ... 512
8.1.1 ARM이란? ... 512
8.1.2 ARM의 특징 ... 514
8.1.3 ARM의 구조 ... 517
8.1.4 프로그래머스 모델 ... 522
8.1.5 예외처리 ... 533
8.1.6 ARM 명령어 ... 541
8.2 타겟 시스템(2410TK)의 개요 ... 558
8.2.1 삼성 S3C2410의 개요 ... 558
8.2.2 S3C2410의 특징 ... 561
8.2.3 2410TK 보드의 개요 ... 569
8.3 2410TK 보드 테스트 ... 572
8.3.1 환경설정 ... 572
8.3.2 2410TK 보드의 기능 테스트 ... 575
9 2410TK 보드에 Windows CE 포팅 ... 583
9.1 포팅 준비 ... 584
9.1.1 BSP 구성하기 ... 584
9.1.2 EBOOT 구현 ... 587
9.2 커널 동작과정 ... 606
9.2.1 OAL이란? ... 606
9.2.2 OAL 작성 ... 611
9.2.3 OAL 기본함수 작성 ... 613
9.2.4 OAL 추가함수 작성 ... 619
9.3 커널 올리기 ... 621
9.3.1 BSP 복사하여 치워두기 ... 621
9.3.2 BSP 등록하기 ... 621
9.4 KITL을 이용한 디버깅 ... 642
10 디바이스 드라이버 만들기 ... 647
10.1 간단한 디바이스 드라이버 만들기 ... 648
10.2 인터럽트를 이용한 디바이스 드라이버 만들기 ... 654
10.3 KITL을 이용한 디바이스 드라이버 디버깅 ... 659
10.4 드라이버 테스트 ... 668
11 Windows CE 플랫폼 만들기 ... 681
11.1 Tiny Kernel 플랫폼 ... 682
12 Windows CE 애플리케이션 만들기 ... 689
12.1 애플리케이션 개발을 위한 SDK 만들기 ... 690
12.2 네이티브와 매니지드 애플리케이션 모델 ... 694
12.3 애플리케이션에서 직접 디바이스 제어하기 ... 696
12.4 사용자용 셸 만들기 ... 701
12.5 애플리케이션 탑재 ... 703
12.6 응용편을 마치면서 ... 706
부록 ARM Instruction Set ... 707
찾아보기 ... 718
부록 CD 설명 ... 734
더보기 닫기