Top

Windows CE 실전 가이드

  • 지은이이봉석, 류명희
  • ISBN : 898997593X
  • 40,000원
  • 2006년 05월 12일 펴냄
  • 페이퍼백 | 736쪽 | 190*255mm
  • 시리즈 : 임베디드 시스템

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/windows-ce)

국내서는 물론이고 원서도 거의 드문 탓에 자료를 찾느라 애태우던 개발자들의 갈증을 해소시켜 줄 Windows CE 책이 드디어 출간되었다.

이 책에서는 네비게이션, PMP 등 멀티미디어 제품을 포함한 임베디드 시스템에서 동작하는 운영체제인 Windows CE의 로우레벨 계층을 상세히 파헤치고 있다. 또한 디바이스 드라이버의 구조와 작성법을 설명하며, 특정 ARM 타겟을 대상으로 Windows CE를 포팅하는 과정을 자세히 알려준다.


[ 이 책의 구성 ]

1장. Windows CE 소개에서는 Windows CE의 전반적인 개요와 역사, 장점과 특징, Windows CE v5.0에서 특히 달라진 기능 등에 대해 소개한다.

2장. 플랫폼 빌더에서는 플랫폼 빌더 5.0을 사용하는 방법을 소개하고 있다. 플랫폼 빌더를 사용해 플랫폼을 생성하는 방법과 이미지 생성 방법, 디버깅 방법 등을 소개한다.

3장. 부트로더에서는 부트로더의 구조를 파악하고 생성하는 방법을 소개하고 있다.

4장. 커널과 OAL에서는 Windows CE v5.0 커널의 특징과 OAL(OEM Adaptation Layer)을 소개하고 있다. 특히 커널과 OAL의 연관관계를 위주로 설명한다.

5장. 디바이스 드라이버의 개요에서는 Windows CE v5.0에서 운용되는 디바이스 드라이버들의 유형을 소개하고 있다. 여기에는 스트림 인터페이스, 네이티브 인터페이스, 버스 인터페이스, 미니포트, 계층 드라이버 모델 등이 포함된다. 또한 드라이버에서 자주 다루는 하드웨어 인터럽트 처리방식에 대해 소개한다.

6장. 디바이스 드라이버의 응용에서는 Windows CE v5.0에서 운용되는 실전 드라이버들 중 사용빈도가 높은 드라이버를 선정해 소개한다.

7장. 개발환경 구축에서는 개발환경을 구축하는 방법과 개발시의 절차를 다룬다.

8장. 타겟 시스템의 개요에서는 타겟 시스템의 내용에 대해 다루며, 전세계에서 가장 많이 사용하고 있는 ARM에 대해 살펴 본다. 간단하게 나마, ARM에 대해 이해를 하고 타겟 시스템에 대해 이해를 하도록 구성했다.

9장. 2410TK 보드에 Windows CE 포팅에서는 Windows CE를 사용하는 방법 및 EBOOT와 Windows CE 커널을 올려서 동작시키는 방법을 살펴볼 것이다. 여기서 마이크로소프트의 Windows CE 플랫폼 빌더에 포함된 SMDK2410에 대한 BSP를 활용해 타겟 시스템에 적재하는 방법을 살펴본다.

10장. 디바이스 드라이버 만들기에서는 디바이스 드라이버를 만드는 방법을 살펴보게 되는데, 간단하게 샘플 디바이스 드라이버를 만들고 이를 적재해 디버깅하는 방법과 Windows CETK를 활용해 디바이스 드라이버를 테스팅하는 방법을 설명한다. 특히 CETK에 나만의 디바이스 드라이버를 위한 테스트 루틴을 추가하는 방법에 대해 주로 살펴본다.

11장. Windows CE의 플랫폼 만들기에서는 프로젝트로 Tiny Kernel을 활용해 타겟 시스템에 가장 빠르게 Windows CE를 올려서 Windows CE가 제대로 동작되는지 여부를 확인하도록 구성했다.

12장. Windows CE용 애플리케이션 만들기에서는 애플리케이션에 대해 살펴보게 되는데, 플랫폼 빌더에서 애플리케이션을 작성하는 방법을 다룬다. 또한 애플리케이션에서 디바이스 드라이버와 같은 흉내를 내도록 프로그래밍 하는 방법을 살펴보며, 이때 사용되는 SDK를 만드는 방법과 제품에 적용하기 위해 사용자용 셸을 만드는 방법에 대해 배워보게 된다.


[ 이 책의 대상 및 준비사항 ]

이 책은 Windows CE를 처음 접하게 되는 독자층을 위주로 작성되었다. 물론 Windows CE를 사용하고는 있지만 특별한 기능들을 살펴보고자 하는 독자들이 대상이다. 이 책에서 다루고 있는 대부분 내용이 C 언어로 구성되었기 때문에 C에 대한 기초지식이 있어야 이해가 빠를 것이다. 그리고 무엇보다 임베디드 시스템의 개발방법에 대한 이해는 필수적일 것이다.


[ 이 책의 활용법 ]

이 책에서 다루는 내용은 대부분 MSDN에 이미 있는 내용들이다. 그렇기 때문에 이 책을 읽었다고 해서 독자들이 모두 Windows CE에 대한 전문가가 된다는 생각은 버리기를 바란다. 단, 이 책은 Windows CE를 좀더 체계적으로 공부하고 전문가가 되기 위한 한 과정으로 생각하기를 바란다. 2부. 응용편에서 다루게 되는 내용들은 특히, 실제 제품을 개발하는 경우에 접하게 되는 내용들을 위주로 설명했기 때문에 실무에서 활용할 때 많은 참고가 되리라 생각한다.


[ 부록 CD ]

이 책에 포함된 CD-ROM에는 본문에 사용된 모든 예제들이 포함되어 있다. 이들 코드들은 Microsoft Windows XP Professional 버전에 Windows CE v5.0 플랫폼 빌더(Platform Builder)가 설치되어 있어야 하며, Window CE v5.0 플랫폼 빌더는 2004년과 2005년도 패치가 적용된 PC에서 개발하고 테스트했다. 따라서 이 코드를 작동해 보려면 위에서 열거한 모든 환경이 맞추어져 있어야만 동작이 가능하다. 또한 6장의 예제는 Windows CE v5.0 플랫폼 빌더에 X86 에뮬레이터가 설치되어 있어야만 하며, 2부. 응용편의 모든 예제는 2410TK 보드가 있어야만 정상적으로 사용이 가능하다. 코드를 개발하는 데 사용한 개발툴은 모두 Windows CE v5.0 플랫폼 빌더에 포함되어 있다. 비록 2410TK 보드에 맞추어서 개발하고 테스트되었지만, 모든 예제 코드들은 Windows CE v5.0의 사용에 목적을 두고 있으며, 다른 여러 프로세서로 쉽게 포팅할 수 있다.

저자/역자 소개

[ 저자 소개 ]

이봉석

국립서울산업대학교 전자계산학과를 졸업한 뒤, 1998년 )『 (주)하제소프트』를 설립하여 지금까지 국내외에서 사용되는 많은 하드웨어 벤더들의 디바이스 드라이버를 개발, 공급해오고 있다. 1998년 국내 최초로 ‘Windows 95를 위한 가상장치관리자(VxD)’를 ‘마이크로소프트웨어’ 잡지에 기고한 뒤, 2005년 “고급개발자를 위한 디바이스드라이버 구조와 원리, 그리고 제작노하우”라는 저서를 출간했다.
현재 (주)하제소프트의 대표이사를 맡고 있으며, 국내의 많은 시스템소프트웨어 개발자들의 수준을 향상시키기 위하여 기업교육과 USB, Windows Device Driver, Wince CE(.NET, 5.0)분야에서 전임강사로도 활발히 활동하고 있다.


류명희

한남대학교 전자계산공학과 학부와 광운대학교에서 대학원을 졸업했으며, 현재는 DVB-H를 칩을 다루고 있는 DiBcom에서 근무하고 있다. ARM 본사로부터 ARM 공인강사 자격을 취득하여 국내에서 활동하기도 했으며, 국내 유수의 교육기관에서 ARM과 관련한 교육을 진행한 경험이 있다. 예전에는 임베디드 리눅스를 주로 다뤘으며 최근에는 Windows CE를 이용해 DVB-H 칩에 대한 포팅 작업을 하고 있다.
월간 ‘월간 임베디드월드’에 U-Boot 포팅 방법을 주제로 기고했으며, 삼성의 CPU를 제대로 사용할 수 있도록 국내외 많은 업체에 기술지원을 하기도 했다.


[ 저자 서문 ]

Windows CE는 필자처럼 리눅스나 다른 운영체제가 아닌 Windows 계통의 운영체제 위주로 공부해온 사람들에게는 훨씬 접근하기가 쉽다. 데스크탑 Windows 운영체제에서는 내부를 들여다 볼 수 없기에 느껴야 했던 답답한 마음 등 이런 것들이 필자처럼 고리타분하게도 운영체제의 원리를 궁금해하는 비슷한 부류의 사람들에게 갈증을 불러 일으키고 있었다. 이러던 중 어쩌다 Windows CE를 접하게 되면서 그 동안 궁금해왔던 가려진 운영체제 코드들을 볼 수 있게 되었다. 오픈소스인 리눅스를 공부하는 사람들은 아무렇지 않을 수 있는 자극이겠지만, 이런 운영체제 코드를 실제로 눈으로 보면서 엄청난 충격과 함께 희열을 느꼈던 것은 단순히 필자의 정신세계에 문제가 있어서만은 아닐 것이다. 그러므로 어쩌다 해킹된 일부 데스크탑 운영체제 코드를 보거나 아니면 커널 디버거와 심볼파일을 사용해서 자신의 리버스 엔지니어링 기술에 의존해 역추적하여 실제 운영체제의 동작원리를 비슷하게나마 연구해오던 필자와 같은 부류의 사람들에게 Windows CE를 적극 추천하는 바이다.

리눅스나 다른 임베디드 운영체제를 접하는 사람들은 태스크(TASK)라는 개념 아래, 자신의 코드에서 while()이나 반복 등의 문장을 배제하면서, 가급적이면 비동기적으로 동작하는 코드를 작성하려고 고민한다. 그러면서 외부 태스크와의 통신을 위해서 시그널(Signal) 방식을 연구하는 데 반해서, Windows CE는 과거 윈도우 데스크탑 운영체제가 그러하듯이 프로세스와 스레드 개념을 적용하며, 이벤트(Event)나 메시지(Message) 기반의 코딩을 지원하고 있다. 또한 앞으로 발표될 차기 Windows CE 버전에서는 데스크탑에서 보던 계층화된 디바이스 드라이버 구조 또한 나타나게 될 것이다. 이 말이 Windows CE 버전이 다른 것이 넘볼 수 없는 막강한 장점을 가졌다는 의미는 아니다. 데스크탑 환경의 Windows 운영체제를 공부해오던 사람들은 아무래도 Windows CE 환경이 훨씬 이해하기 쉽다는 뜻이다. 이에 필자는 감히, 이 책을 읽는 독자들이 최소한 데스크탑 환경에서 사용되는 Windows의 구조에 대해 약간이라도 이해해두는 편이 유리하다고 생각한다.

Windows CE를 심도있게 다루는 책은 해외서적뿐만 아니라 국내서적도 찾기가 힘들다. 사실 Windows CE에 대한 보든 내용은 마이크로소프트가 제공하는 MSDN을 참조하면 된다. 하지만 엄청나게 방대한 MSDN에서 자신이 원하는 내용을 스스로 찾아 습득하는 일은 여간 어려운 일이 아니다. 이 책을 통해 Windows CE를 공부하고 이를 바탕하는 Windows CE 기반의 개발을 시작하려는 개발자들이 많은 도움을 얻기를 기대한다.

- 이봉석



처음 에이콘출판사로부터 Windows CE와 관련된 서적을 만들어 보자는 제의를 받았을 때는 상당히 고민스러웠다. Windows CE를 접하게 된 지 1년도 채 되지 않던 때였기 때문이었다. 그럼에도 불구하고 출판사의 제의를 흔쾌히 승낙한 데는 필자가 처음 Windows CE를 접하게 되면서 가졌던 혼란을 다른 사람들이 똑같이 반복하지 않기를 바라던 이유가 있었다. 또한 지금까지 알고 있었던 단편적인 지식들을 하나로 묶어 체계를 정립하고자 하는 의도도 컸다.

책을 만들기까지 장장 약 7개월의 시간이 흘렀다. 책을 만들면서 어디서부터 어디까지 다뤄야 할지가 가장 큰 고민거리였다. 책을 저술하는 도중 업체 관계자와 많은 미팅을 가지면서 “기존 서적과는 좀 차별화를 둬야겠다”고 생각하고 전력을 다했다. 그러나 이는 저자만의 생각일지도 모른다. 우리 저자들은 이 책을 읽는 독자들이 처음단계에 Windows CE를 접하게 되면서 경험하게 되는 애로점들을 위주로 작성했다. 필자의 경우에는 Windows CE에 앞서 임베디드 리눅스만을 다루어 왔다. 그렇기 때문에 이 책에서도 접근하는 방법에 있어서는 임베디드 리눅스 때와 같이 접근했으며, 가장 큰 애로점으로 여기던 소스코드의 추적에 역점을 뒀다.

이 책은 Windows CE에 대한 기본적인 부분과 실제 타겟 시스템을 가지고 작업하는 응용편으로 나뉘게 된다. 대부분 Windows CE 관련 서적들은 애플리케이션을 다루게 되지만, 이 책에서는 Windows CE의 기본과 응용을 배울 수 있을 것이다. 특히 가장 기본적으로 사용이 되는 Windows CE를 이용해 타겟 시스템을 살리는 방법, 문제가 발견되면 어떻게 문제점을 찾아가는지(디버깅 방법)와 남들과 다르게 애플리케이션을 이용하는 방법들에 대해서 설명했다. 대부분 독자들이 MSDN에서도 찾지 못했을 비법들을 많이 다루고자 노력했다. 아무쪼록 이 책이 한국에서 Windows CE를 사용하는 모든 분께 조금이나마 도움이 되기를 진심으로 기원한다.

- 류명희

목차

목차
  • 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 응용편을 마치면서

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

[ p35 표 1.1 ]
‘SH4’행 ‘X86 (CEPC)’을 X86행으로

[ p50 본문 부분 1행 ]
이 과정에서 Sources.cmn 파일을 실행한뒤, _COMMONPUBROOT, _PROJROOT 환경
→ 이 과정에서 Sources.cmn 파일을 실행한뒤, _COMMONPUBROOT, __PROJROOT 환경

[ p133 리스팅 3.8 아래쪽 ]
/* 이 함수가 (생략) 의미가 된다.
*/
부분을 리스팅 마지막 2행 위로 이동

[ p136 그림 3.4 ]
RAM을 위한 공간 → 플래시를 위한 공간
Flash를 위한 공간 → RAM을 위한 공간

[ p142 리스팅 3.18 ]
util.c 파일의 Launch() 함수 → util.s

[ p170 1-2행 ]
필수함수들은~다음과 같다.
→ 앞 페이지에 나열해 놓은 필수함수들은 반드시 구현돼 있어야 NK.exe가 만들어지는 특징을 지닌 함수들이다.

[ p172 예제 4.1 12행의 주석 ]
; 32 메모리 뱅크0번 : SROM(SRAM/ROM) → ; 메모리 뱅크0번 : SROM(SRAM/ROM)

[ p179 3행 ]
이와 같은~다른 외부에서 → 이와 같은 함수명을 사용하는 이유는, 외부에서

[ p179 아래에서 4행 주석 번역 ]
; Init command 2, vector interrupts to 64 → ; 초기화 명령 2, 벡터 인터럽트 64

[ p180 2행 주석 번역 ]
; Init command 2, vector interrupts to 40 → ; 초기화 명령 2, 벡터 인터럽트 40

[ p206 그림 4.14 번역 (위에서부터 아래로) ]
실행할 스레드가 없음
임의의 인터럽트
타이머 완료
웨이크업 이벤트

[ p220 18행, 20행 번역 ]
// device transport config (생략) → // 디바이스 전송에 대한 설정
// Host config → // 호스트 설정

[ p258 ]
‘Inbuffer는 클라이언트 ~ 변수이다.’를 p.254 아래에서 2행 위로 이동

[ p265 9행 ]
‘EnterCriticalSection(&g_devcs);’를 삭제

[ p330 14행 ]
// X86 계통에서는 이처럼 → // 이처럼

[ p366 3-5행 ]
MDD 관점에서~ 못 할뿐만 아니라,
→ 앞으로도 플랫폼 빌더의 버전이 점점 더 올라갈 경우에 PDD 모듈을 지원하는 방법이 항상 같다고 보장하지 못하기 때문에, MDD 관점에서 개발을 해보지 않은 개발자는

[ p411 8행 ]
프로토콜 드라이버로부터 외부컴퓨터로 → 프로토콜 드라이버로부터 다른 곳으로

[ p412 12행 ]
미니포트 드라이버가 ~ 읽혀질 것이다.
→ 미니포트 드라이버에 있는 W_HANDLE_INTERRUPT_HANDLER() 함수에 의해서 데이터가 카드로부터 드라이버 측으로 전송될 것이다.

[ p412 아래에서 3행 ]
온전한 데이터로 확인하게 되면, → 온전하다고 판별되면,

[ p433 아래에서 1행, 12행 ]
case WPDM_CLOSE: 삭제

[ p440 아래에서 2행 번역 ]
예) SA1110 Chip’s case → 예) SA1110 Chip’s 경우

[ p485 1-2행 주석 부분 번역 ]
// IN-FDD 구조에 대한 포인터
// IN-레지스트리키 문자열에 대한 포인터

[ p510 마지막 행 ]
누구라 하더라도 → 누가 하더라도

[ p544 11행 ]
0x0번지까지 밖에는 분기가 불가능하다. → 0x0번지까지만 분기가 가능하다.

[ p557 예제박스 아래 문단 ]
‘지금까지우리는 ~ 않기 때문이다.’ 삭제

[ p559 10-11행 ]
IIC → I2C, IIS → I2S

[ p582 마지막 문단 p.558 아래에서 10행 ]
‘일례로~동작한다.’의 주석으로 이동

[ p596 아래에서 3행 ]
r3 레지스터 저장하는 → r3 레지스터에 저장하는

[ p597 리스팅 9.6의 3행 ]
‘// LED 크기’ → ‘// LED 끄기’

[ p598 5행 공백 삭제 ]
C: \WINCE500\_PLATFORM → C: \WINCE500\PLATFORM

[ p651 예제 10.4 아래 2행 ]
정보의 접두사로 사용되는 것이다. → 정보를 나타낸다.

[ p666 1-2행 ]
위에서는~명시했다.
→ 위에서 살펴본 기능은 일부에 불과하다. KITL을 이용하면 많은 기능을 사용할 수 있다.