준비 키트( preparation kit)download.microsoft.com/download/0/b/9/0b98a0ae-c7af-4ee2-8cb… ·...

48
Windows Embedded CE 6.0 CTS M Exam 70-571 전매 금지. 인증 시험 준비 준비 키트( Preparation Kit) R2 콘텐츠로 업데이트

Upload: others

Post on 07-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

i

Windows Embedded CE 6.0

CTSMExam 70-571

전매 금지.

인증 시험 준비준비 키트(Preparation Kit)

R2 콘텐츠로

업데이트

Page 2: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

ii

발행인

Microsoft Corporation

One Microsoft Way

Redmond, Washington 98052-6399

이 문서는 정보용입니다 . MICROSOFT 는 이 문서에 포함된 정보에 대해 ( 직접 , 간접 , 특별한 )그 어떤 보증도 하지 않습니다 . 이 문서에 포함된 정보는 발행일을 기준으로 토론된 문제점에 대한 Microsoft Corporation 의 현재 관점을 대표합니다 . Microsoft 는 변하는 시세에 대처해야 하기 때문에 정보에 대한 책임을 질 수 없으며 발행일 이후에 제공되는 정보의 정확성을 보장할 수 없습니다 . URL 과 기타 인터넷 웹사이트 참고 자료를 포함하여 이 문서에 있는 정보는 통보없이 변경될 수 있습니다 .

모든 적용되는 저작권 법을 준수하는 것은 사용자의 책임입니다 . 저작권 하에 권리 제한이 허용되지 않는 한 , Microsoft Corporation 의 명시적 서면 허가없이 이 문서의 그 어느 일부도 그 어떤목적으로든 무단으로 복제 , 검색 시스템으로 저장 또는 입력 , 또는 그 어떤 형태나 방식으로 전송( 전자 , 기계 , 복사 , 기록 , 또는 기타 ) 될 수 없습니다 . Microsoft 는 이 문서상에 언급된 주제에관련된 특허 , 특허 응용 프로그램 , 등록 상표 , 저작권 또는 기타 지적 재산권을 소유할 수 있습니다 . Microsoft 와의 서면 사용권 계약에 명시적으로 나타나 있지 않은 이상 , 이 문서의 제공으로인해 이러한 특허 , 등록 상표 , 저작권 및 기타 지적 재산권에 대한 그 어떤 사용권도 부여되지 않습니다 .

저작권 © 2008 Microsoft Corporation. 모든 권리 소유 .

Microsoft, ActiveSync, IntelliSense, Internet Explorer, MSDN, Visual Studio, Win32,Windows 및 Windows Mobile 은 Microsoft 회사 그룹의 등록 상표입니다 . 이 문서에 언급된 회사와 제품의 실제 이름은 해당 소유자의 상표일 수 있습니다 .

용례에 사용된 회사 , 기관 , 제품 , 도메인 이름 , 전자 메일 주소 , 로고 , 사람 , 장소 및 이벤트는 다른 설명이 없는 한 실제 데이터가 아닙니다 . 어떠한 실제 회사 , 기관 , 제품 , 도메인 이름 , 전자 메일 주소 , 로고 , 사람 , 장소 또는 이벤트와도 연관시킬 의도가 없으며 그렇게 유추해서도 안 됩니다 .

인수 편집인 : 산드라 웨버 (Sondra Webber), Microsoft Corporation

저자 : 니콜라스 베슨 (Nicolas Besson), Adeneo Corporation레이 마르실라 (Ray Marcilla), Adeneo Corporation라제쉬 캐이드 (Rajesh Kakde), Adeneo Corporation

집필 감독 : 워런 루보 (Warren Lubow), Adeneo Corporation

기술 검수인 : 브리지트 후왕 (Brigette Huang), Microsoft Corporation

편집 제작 : Biblioso Corporation

본문 번호 X00-00000

Page 3: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

iii

간단한 내용

서문 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

소개 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

1 운영체제 디자인 설계 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 런타임 이미지 빌드와 배포 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3 시스템 프로그래밍 실행 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

4 디버깅 및 시스템 테스트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

5 보드 지윈 패키지의 사용자 지정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

6 장치 드라이버 개발 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

용어 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

색인 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

저자에 대하여 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

Page 4: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시
Page 5: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

37

제 2 장

런타임 이미지 빌드와 배포

마이크로소프트® 윈도우® 임베디드 CE 6.0 R2 빌드 과정은 매우 복잡하다 . 이

과정은 여러 단계를 포함하며 윈도우 임베디드 CE 빌드 환경을 초기화 , 소스 코

드를 컴파일 , 모듈과 파일을 표준 릴리즈 디렉토리에 복사하고 , 그리고 런타임

이미지를 생성하기 위해 다양한 툴 ( 명령어 ) 에 의존한다 . Sysgen 도구

(Sysgen.bat) 와 Make Binary Image 도구 (Makeimg.exe) 같은 배치파일과 빌

드 툴이 이 과정을 자동화시킨다 . 사용자는 명령 프롬프트에서 이 명령어를 직접

적으로 실행하거나 또는 윈도우 임베디드 CE 6.0 R2 에 통합된 마이크로소프트

플랫폼 빌더에서 빌드 진행을 시작할 수 있다 . 플랫폼 빌더 통합 개발 환경

(Platform Builder integrated development environment: IDE) 은 똑 같은 빌

드 과정과 명령어에 의존한다 . 각각의 경우에서 , 사용자가 런타임 이미지를 효

율적으로 생성하고 , 빌드 오류에 대한 문제해결을 하고 ,, 또는 대상 장치에 보드

지윈패키지 (BSP) 와 하위 프로젝트가 포함된 런타임 이미지를 적용하여 배포하

기를 윈한다면 , 빌드 과정과 런타임 이미지 생성 절차에 대한 이해가 필수적이다 .

이 장에서의 학습 목표 :

■ 런타임 이미지 빌드

■ 빌드 결과와 빌드 파일 분석

■ 대상장치에 런타임 이미지배포

Page 6: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

38 제 2장 런타임 이미지 빌드와 배포

시작하기 전에■ 이 장의 학습을 완벽하게 이해하려면 , 사용자는 반드시 다음 과정을 실행하

여야 하여야 한다 :

■ 제 1 장 “운영체제 설계의 커스터마이징하기의 설명에 따라 , 카탈로그 항목

과 환경 변수 구성 그리고 SYSGEN 변수를 포함하는 운영체제 (OS) 설계 관

점에서 이해 .

■ 소스 코드 컴파일 및 연결을 포함하는 윈도우 임베디드 CE 소프트웨어 개발

에 대한 몇 가지 기본적인 지식 .

플랫폼 빌더가 통합된 윈도우 임베디드 CE 6.0 R2 와 마이크로소프트 비주얼 스

튜디오® 2005 서비스 팩 1 이 설치된 개발용 컴퓨터 .

Page 7: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 39

제 1과 : 런타임 이미지 빌드윈도우 임베디드 CE 빌드 과정은 런타임이미지 개발 주기에서 최종적인 단계이

다 . OS 설계에서 정의된 설정을 기반으로 , 플랫폼 빌더는 하위프로젝트와 BSP

그리고 사용자가 대상장치에 다운로드 할 수 있는 런타임 이미지를 생성을 포함

하는 모든 구성요소를 컴파일 한다 . 빌드 과정은 여럿의 빌드 단계를 수반하며 ,

배치 파일에 의하여 자동 실행된다 . 빌드 옵션의 올바른 구성 , 런타임 이미지의

효율적 생성 , 그리고 빌드 - 관련 문제를 해결하기 위해서 , 사용자는 이러한 빌

드 단계와 빌드 명령에 대해서 반드시 이해해야 한다 .

이 과정을 마치면 , 사용자는 다음을 할 수 있다 :

■ 빌드 과정의 이해 .

■ 빌드 관련 문제의 분석과 해결 .

■ 대상 하드웨어에 런타임 이미지를 배포

예상 학습 시간 : 40 분 .

빌드 과정 개요그림 2-1 과 같이 , 윈도우 임베디드 CE 빌드 과정은 네 가지 주요 단계를 포함

한다 . 이들은 순차적으로 수행하지만 , 그러나 각각의 단계에 대해서 사용된 목

적과 명령어를 이해 한다면 사용자는 또한 그들을 독립적으로 수행할 수 있다 .

빌드 명령을 선택적으로 실행하는 것에 대해서 , 사용자는 목적하는 방법에 따라

개별적으로 정해진 빌드 단계를 수행할 수 있다 . 그리고 그것은 빌드 시간을 절

약하는 것을 돕고 궁극적으로 효율을 증가시킨다 .

Page 8: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

40 제 2장 런타임 이미지 빌드와 배포

그림 2-1 빌드 단계와 빌드 명령

빌드 과정은 다음과 같이 중요한 단계를 포함한다 :

■ 컴파일 단계 컴파일러와 링커는 실행 (.exe) 파일 , 정적 (.lib) 라이브러리 ,

동적 - 링크 라이브러리 (.dll) 파일 , 그리고 선택된 언어 및 지역에 따라 바

이너리 리소스 (.res) 를 사용한다 . 예를 들면 , 빌드 시스템은 이 단계 동안

lib 파일에 Public 과 Private 폴더에 있는 소스 코드를 컴파일 한다 . 이 과

정은 완료하는데 몇 시간이 걸릴 수 있다 . 그러나 다행히 이러한 바이너리

가 이미 마이크로소프트에 의해 제공되기 때문에 리빌드하기 위해서 , 이 구

성요소를 요구하지는 않는다 . 어떠한 경우라도 , 사용자는 Public 와 Private

폴더에 있는 소스 코드를 수정해서는 안 된다

■ Sysgen 단계 빌드 시스템은 운영 체제에 설계에 포함된 카탈로그 항목 및

종속성에 기반하여 SYSGEN 환경변수를 설정 (=1) 또는 해제 (=), 헤더 파

일의 필터 및 운영 체제 설계에서 정의한 소프트웨어 개발 키트 (SDKs) 를

위한 임포트 라이브러리를 생성 , 운영체제 설계를 위한 일련의 런타임 이미

지 구성파일 생성 , 그리고 플랫폼 디렉토리에 있는 소스파일을 기반으로

BSP 를 빌드한다 .

■ 빌드 단계 빌드 시스템은 Sysgen 단계 동안 생성된 파일을 사용하여 사

용자의 보드 지윈 패키지 (BSP) 와 어플리케이션의 소스 파일을 처리한다 .

이 단계에서 하드웨어 드라이버와 OEM 적용 레이어 (OAL) 는 빌드 된다 .

빌드 단계 동안의 과정이 자동적으로 Sysgen 단계 동안 수행될지라도 , 사

Page 9: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 41

용자가 단지 BSP 와 하위 프로젝트를 수정한다면 그것을 이해하는 것은 중

요하다 . 그리고 사용자는 Sysgen 도구를 다시 수행하지 않고 BSP 와 하위

프로젝트를 리빌드할 수 있다 .

■ 릴리즈 복사 단계 빌드 시스템은 OS 설계의 릴리즈 디렉토리로 런타임

이미지를 생성하기 위해 요구된 모든 파일을 복사한다 . 이것은 .lib, .dll, 컴

파일 동안 새로 만들어진 .exe 파일 , Sysgen 단계 , 바이너리 이미지 빌더

(.bib) 와 그리고 레지스트리 (.reg) 파일을 포함한다 . 헤더와 라이브러리가

가장 최신이라면 , 빌드 시스템은 이 단계를 건너 뛸 수도 있다 .

■ 런타임 이미지 만들기 단계 빌드 시스템은 프로젝트 - 지정 파일

(project.bib, project.dat, project.db, 그리고 project.reg) 을 릴리즈 디렉

토리에 복사하고 그리고 릴리즈 디렉토리에 있는 모든 파일을 런타임 이미

지에 모은다 . .reg 와 .bib 에 명시된 환경 변수에 기반하는 내용은 빌드 시

스템이 최종적인 런타임 이미지에 포함하는 카탈로그 항목을 제어한다 . 런

타임 이미지는 일반적으로 Nk.bin 으로 이름 지어진 파일이며 , 이것은 사용

자가 대상장치에 대해 다운로드 할 수 있고 실행할 수도 있다 .

비주얼 스튜디오에서 런타임 이미지 빌드 사용자의 개발용 워크스테이션에 있는 윈도우 임베디드 CE 6.0 R2 의 설치하는

동안 , 플랫폼 빌더는 비주얼 스튜디오 2005 와 통합하고 빌드 메뉴를 확장한다 .

사용자는 직접적으로 비주얼 스튜디오 IDE 에서 빌드 과정을 제어할 수 있다 . 그

림 2-2 는 솔루션 익스플로러에서 OS 설계 노드를 선택할 때 빌드 메뉴에서 사

용 가능한 플랫폼 빌더 명령을 보여준다 .

사용자는 빌드 메뉴에서 선택적 빌드 단계를 수행하거나 또는 다중 빌드 단계로

구분하는 일련의 단계를 결합하기 위하여 플랫폼 빌더 명령을 사용할 수 있다 .

예를 들면 , 헤더파일과 라이브러리가 변화하지 않았을지라도 빌드 시스템이 갱

신된 .bib 와 .reg 파일을 릴리즈 디렉토리로 복사하는 것을 보장하기 위해 Copy

Files To Release 디렉토리 명령을 사용해야 한다 . 그렇지 않으면 , 빌드 시스템

은 릴리즈 복사 단계를 건너 뛰기 하거나 런타임 이미지에 .bib 파일 또는 .reg 파

일의 수정사항이 적용되지 않는다 .

Page 10: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

42 제 2장 런타임 이미지 빌드와 배포

그림 2-2 비주얼 스튜디오 2005 에서 윈도우 임베디드 CE 빌드 명령

윈도우 임베디드 CE 빌드 명령의 목적을 표 2-1 에 요약한다 .

표 2-1 윈도우 임베디드 CE 빌드와 리빌드 명령

메뉴 선택 설명

Build Solution Sysgen 명령에 상응하는 Advanced Build Commands 서브메뉴 .

Rebuild Solution Clean Sysgen 명령에 상응하는 Advanced Build Commands 서브메뉴 .

Clean Solution 모든 임시 파일을 삭제함으로써 릴리즈 디렉토리를 클린한다 .

Build <OS 프로젝트 이름 > 다중 OS 설계를 포함하는 솔루션에서 도움이 된다 . 하나의 OS 설계와 관련된 솔루션에서 빌드 솔루션 , 리빌드 솔루션 , 그리고 클린 솔루션 명령은 이러한 옵션과 일치한다 .

Rebuild <OS 프로젝트 이름>

Clean <OS 프로젝트 이름 >

Page 11: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 43

Advanced Build Commands

Sysgen Sysgen 도구를 실행하고 런타임 이미지에 대해 파일을 생성하기위하여 공개폴더에서의 .lib 파일과 비공개 폴더를 링크한다 . 그 파일은 OS 디자인의 WinCE 폴더에 남아 있다 . Global Build 설정에 의존하면서 , 빌드 과정은 Release Copy 에게 자동적으로 전환하고 나서 Make Run-time Image 단계로 전환한다 .

Clean Sysgen

Sysgen 도구를 실행하기 전에 빌드 동안 생성된 임시 파일을 클린한다 . 사용자가 빌드 오류의 위험을 감소시키는 이전의 Sysgen 세션 후에 파일이나 카탈로그 항목을 추가 했거나 제거했다면 이 옵션을 사용한다 .

Build And Sysgen

공개와 비공개 폴더 전체의 내용을 컴파일 한다 . 그리고 사용자 OS 디자인에 그 설정을 사용함으로써 파일을 링크한다 . 이 과정은 여러 시간을 소요하고 사용자가 단지 공개 폴더의 내용을 수정했다면 필요하다 . 사용자가 윈도우 임베디드 CE 코드 베이스 ( 권장되지 않음 ) 를 수정하지 않으면 , 사용자는 이 옵션을 사용해서는 안된다

Rebuild And Sysgen

공개와 비공개폴더에서 이전의 빌드동안 생성된 임시파일을 클린한다 . 그리고 빌드와 Sysgen 단계를 실행한다 . 사용자는 이 옵션을 사용해서는 안 된다 .

현재 BSP와 하위 프로젝트 빌드

현재 BSP 와 OS 디자인에서 어떤 하위 프로젝트를 위해서 디렉토리에서 파일을 빌드한다 . 그리고 Sysgen 도구를 실행한다 . 이 옵션이 현재의 OS 디자인에 사용된 하나보다 다른 BSPs 를 빌드하고 사용자 BSPs 가 서로 호환성이 있거나 또는 사용되지 않은 BSPs 를 제거한다는 것을 유의한다 .

현재 BSP와 하위 프로젝트 리빌드

이전의 빌드 동안 생성된 임시 파일을 클린한다 . 그리고 Build Current BSP 와 하위 프로젝트 단계를 실행한다 .

모든 하위 프로젝트 빌드 최신 정보를 가진 어떤 파일도 건너뛰기 하면서 , 모든 하위 프로젝트를 컴파일하고 링크한다 .

모든 하위 프로젝트 리빌드 모든 하위 프로젝트를 클린 , 컴파일 , 그리고 링크한다.

표 2-1 윈도우 임베디드 CE 빌드와 리빌드 명령

메뉴 선택 설명

Page 12: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

44 제 2장 런타임 이미지 빌드와 배포

Advanced Build Commands submenu 는 사용자가 규칙적인 기초에서 유용하

다고 판단할 수도 있는 플랫폼 빌더에서 사용되는 구체적 빌드 명령의 접근을 제

공한다 . 예를 들면 , 런타임 이미지에 대해 바이너리 버전을 생성하는 OS 디자인

모든 SDKs 빌드 프로젝트에서 모든 SDKs 를 빌드하고 , 일치된 Microsoft Installer(MSI) 패키지를 생성한다 . 일반적으로 MSI 패키지의 디버그 버전을 생성할 어떤 이유도 있지 않기 때문에 , 단지 릴리즈 빌드 구성에 있는 이 옵션을 사용한다 .

파일을 릴리즈 디렉토리에 복사

BSP 를 위해 생성시킨 파일 , 컴파일 동안의 다른 구성요소 , 그리고 런타임 이미지의 릴리즈 디렉토리에 이 파일을 포함하기 위한 Sysgen 단계를 복사한다 .

런타임 이미지 만들기 런타임 이미지를 생성하기 위해 릴리즈 디렉토리 안에서 모든 파일을 잡는다 . 이 단계를 따르면서 , 사용자는 대상장치에 런타임 이미지를 다운로드 할 수 있다 .

빌드 윈도우에서 릴리즈 디렉토리 열기

명령 프롬프트 윈도우를 열고 , 릴리즈 디렉토리안으로 변경, 그리고 일괄처리 파일과 수작업으로 빌드 도구를 실행하기 위해 필요한 모든 환경변수를 설정한다 . 이것은 명령 프롬프트에서 빌드 단계를 수행하는데 사용한다 . 표준 명령 프롬프트 윈도우는 빌드 도구를 성공적으로 실행하기 위해 개발 환경을 초기화하지 않는다 .

글로벌 빌드 설정

빌드후 릴리즈 디렉토리에 파일 복사

모든 명령을 위하여 릴리즈 복사 단계에 automatic advancement 사용하거나 사용하지 않는다 .

빌드후 런타임 이미지 만들기

어떠한 빌드 작업 후에 런타임 이미지 단계까지 나아가는 것을 automatic advancing을 사용하거나 사용하지 않는다

타겟 빌드 설정

빌드후 런타임 이미지 만들기

Make 런타임 이미지 단계를 사용하거나 사용하지 않는다

일괄처리 빌드 사용자가 다중의 빌드를 순차적으로 수행할 수 있게 한다 .

구성 관리자 사용자가 빌드 구성을 추가하거나 제거할 수 있게 한다.

표 2-1 윈도우 임베디드 CE 빌드와 리빌드 명령

메뉴 선택 설명

Page 13: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 45

으로부터 카탈로그 구성요소를 추가하거나 또는 제거할 때 사용자는 Sysgen 이

나 Clean Sysgen 명령을 실행하는 것이 필요하다 . ThirdParty 폴더에 있는 구

성요소와 같게 이 규칙의 예외는 SYSGEN 변수를 수정하지 않는 구성요소이다 .

사용자가 이 항목을 선택하거나 선택취소할 때 Sysgen 이나 Clean Sysgen 을 실

행하는 것은 필요하지 않다 . Sysgen 단계를 따르면서 , 플랫폼 빌더를 실행하는

것과 유사하게 Build Current BSP 그리고 하위 프로젝트 명령의 빌드 과정을 지

속한다 .

사용자는 비주얼 스튜디오에서의 Build Current BSP 와 하위 프로젝트 또는

Rebuild Current BSP 와 하위 프로젝트 명령을 선택할 수 있다 . 사용자가 플랫

폼 디렉토리에서 소스 코드와 OS 디자인으로 어떤 하위 프로젝트를 컴파일하고

링크하는 것을 윈한다면 코드를 Platform₩<BSP Name>₩Target and

Platform₩<BSP Name>₩Lib 아래 대상 디렉토리에 놓는다 .

예를 들어 , 사용자가 플랫폼 디렉토리에서 소스 코드를 수정한다면 이것이 필요

하다. Copy Files To Release Directory After Build와 Make Run-Time Image

After Building 선택에 의존하면서 , 플랫폼 빌더는 파일을 릴리즈 디렉토리로 복

사하고 런타임 이미지를 새로 만든다 . 명령 프롬프트에 있는 Buildrel.exe 와

Makeimg.exe 도구를 실행함으로써 , 사용자는 각각 메뉴를 통해 이 단계를 또한

수행할 수 있다 .

주의 다중 빌드 구성에 영향을 미치는 클린 Sysgen

사용자가 한가지 빌드 구성으로 CLEAN SYSGEN 명령을 실행한다면 , 사용자는 또한 다른 빌드 구성을위해 SYSGEN 을 나중에 실행해야 한다 . CLEAN SYSGEN 명령이 현재의 빌드 구성뿐만 아니라 다른 빌드 구성에서 생성시킨 모든 파일을 삭제한다는 것을 명심해야 한다 .

Command Line 으로부터 런타임 이미지 빌드 비주얼 스튜디오 2005 에 CE6 R2 가 플러그인된 플랫폼 빌더는 파일을 일괄처

리하고 도구를 빌드하기 위해 편리한 접근을 제공한다 . 그러나 사용자는 또한 이

일괄처리 파일을 실행시킬 수 있고 직접적으로 명령 프롬프트로에서 명령어를 사

용하여 빌드할 수 있다 . 플랫폼 빌더와 비주얼 스튜디오에 있는 각각의 빌드 명

령은 표 2-2 에 나열한 것처럼 특정한 빌드 명령과 일치한다 . 그러나 기억해야

할 것은 이 목적을 위해 명령 프롬프터 윈도우를 열기 위해 비주얼 스튜디오에서

의 오픈 빌드 윈도우 명령 런타임 이미지 빌드를 사용한다 . 표준 명령 프롬프트

은 개발 환경을 초기화하지 않으므로 필수 환경 변수의 존재 없이는 빌드 과정도

실패할 것이다 .

Page 14: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

46 제 2장 런타임 이미지 빌드와 배포

* 권장되지 않음

윈도우 임베디드 CE 런타임 이미지 내용 그림 2-3 에서 처럼 , 런타임 이미지는 사용자가 커널 구성요소 , 어플리케이션 ,

그리고 구성 파일과 같은 OS 디자인의 일환으로 대상 장치에서 실행하거나 배포

하기를 윈하는 모든 항목과 구성요소를 포함한다 . 개발자를 위한 가장 중요한 구

성 파일은 바이너리 이미지 빌더 (.bib) 파일 , 레지스트리 (.reg), 데이터베이스

(.db) 와 파일 시스템 (.dat) 파일이다 . 이러한 파일들은 메모리 레이아웃 , 파일

시스템 , 시스템 레지스트리를 플랫폼 빌더가 어떻게 초기화할 것인지를 명시한

다 . 이러한 파일들이 어떻게 작동하는지 아는 것은 중요하다 . 예를 들면 , 사용자

는 OS 설계에서 . reg 과 BSP 를 위한 .bib 파일을 직접적으로 수정하거나 더 많

은 구성요소화 방법으로 런타임 이미지에 사용자 지정 설정을 추가하기 위하여

하위 프로젝트를 생성할 수 있다 . 제 1 장에서 이미 언급한 것처럼 , 일반적으로 .

reg 와 OS 디자인의 .bib 파일을 직접 수정하고 하위 프로젝트가 여러 개의 OS

디자인을 포함하는 것은 사용자 지정으로써 재사용을 용이하게 한다 .

표 2-2 빌드 명령과 명령 라인 이퀴발란트

빌드 명령 명령 라인 이퀴발란트

Build blddemo -q

Rebuild blddemo clean -q

Sysgen blddemo -q

Clean Sysgen blddemo clean -q

Build and Sysgen* Blddemo

Rebuild and Clean Sysgen* blddemo clean cleanplat -c

Build Current BSP and SubProject blddemo -qbsp

Rebuild Current BSP and SubProject blddemo -c -qbsp

Page 15: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 47

그림 2-3 런타임 이미지의 내용

바이너리 이미지 빌더 파일

윈도우 임베디드 CE 빌드 과정은 런타임 이미지의 내용을 생성시키고 장치의 최

종 메모리 레이아웃을 정의하기 위하여 .bib 파일을 참조한다 . 빌드 과정의 최종

단계인 Make Run-Time Image 단계 동안 Make Binary Image 도구

(Makeimg.exe) 는 모두 적용할 수 있는 릴리즈 디렉토리의 Ce.bib 로 이름된 파

일에 Platform₩<BSP Name>₩Files 폴더의 Config.bib 와 Platform.bib 과 하

위 프로젝트의 .bib 파일인 Project.bib 와 Common.bib 를 합치기 위해서 File

Merge 명령 (Fmerge.exe) 를 호출한다 . 이 파일을 처리하고 그리고 런타임 이

미지에 포함하기 위한 , 바이너리와 파일을 결정하기 위해서 Make Binary Image

도구는 ROM Image Builder 도구 (Romimage.exe) 를 호출한다 .

.bib 파일은 다음과 같은 섹션을 포함할 수 있다 :

■ MEMORY 메모리 레이아웃에 대한 매개변수를 정의한다 .

C:₩Wince600₩Platform₩DeviceEmulator₩Files₩Config.bib 과 같이

사용자는 BSP 의 Config.bib 파일에 이 섹션이 존재한다 .

■ CONFIG Romimage.exe가 바이너리의 런타임 이미지를 사용자 지정하기

위해 구성 선택을 정의한다 . 이 섹션은 선택사항으로서 , 사용자는 BSP 의

cinfig.bib 파일에서 파견할 수 있다 .

■ MODULES Romimage.exe가 기록하는 파일의 리스트가 RAM에 로드 되

거나 실행되는 위치 (XIP) 에서 수행되었다는 것을 명시한다 . 단지 압축을

풀어야 하는 개체 모듈은 읽기 전용의 메모리로부터 직접적으로 수행될 수

있다 . Common Language Runtime(CLR) 이 그래야 하고 고유의 기계 코

드로 실행시간에서 Microsoft Intermediate Language(MSIL) 내용을 변환

Page 16: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

48 제 2장 런타임 이미지 빌드와 배포

시키기 때문에 사용자는 어떤 관리된 바이너리를 제외하지 않고 이 섹션의

실행 가능한 윈래의 파일을 기록할 수 있다 .

■ FILES 운영체제 실행을 위한 RAM 안에 부하해야 하는 참조 실행파일과

다른 파일 사용자는 이 섹션에 관리되는 코드 모듈을 명시해야 한다 .

.BIB 파일 MEMORY 섹션 각각의 영역에게 이름 , 주소 , 크기 , 그리고 유형으로

할당하면서 , Config.bib 파일에 있는 MEMORY 영역은 예약된 메모리 영역을 정

의한다 . 사용자가 보기에 좋은 예제는 Device Emulator BSP 에 있는 Config.bib

파일에서 발견할 수 있는 MEMORY 영역이다 . 이 Device Emulator BSP 는 CE

6.0 R2 의 out-of-the-box 를 위한 플랫폼 빌더로 사용이 가능하다 . 사용자는

PLATFORM₩<BSP Name>₩FILES directory 에서 Config.bib 을 발견할 수

있다 . 그림 2-4 는 비주얼 스튜디오 2005 에서 메모리 섹션을 보여준다 .

그림 2-4 .bib 파일로부터 MEMORY 섹션

MEMORY 섹션에 있는 필드란 에 다음의 매개변수를 정의한다 :

■ NAME 이것은 메모리 섹션의 이름이다 . 그 이름은 고유해야 한다 .

Page 17: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 49

■ ADDRESS 이 16 진수는 메모리섹션의 시작하는 주소를 나타낸다 .

■ SIZE 이 16 진수는 바이트에서의 메모리 섹션의 전체적인 길이를 정의한

다 .

■ TYPE 이 필드는 다음 중의 하나의 값을 가질 수 있다 :

■ RESERVED 이 영역이 예약되는 것을 가리킨다 . Romimage.exe 는 이

미지 생성하는 동안에 이 섹션을 건너 램에 할당한다 . 예를 들어 , 그림

에서 2-4 에서 보여진 Ce.bib 파일은 ARGS 섹션에서 공유 메모리 영역

을 제공하는 부트 로더 (EBOOT) 를 통과한 후 시스템에 데이터를 시작

(ARGS) 과 디스플레이 버퍼를 위한 DISPLAY 섹션과 같은 여럿의

RESERVED 섹션을 포함한다 . 다른 OS 디자인의 Ce.bib 파일은 그 커

널이 시스템 메모리로서 이용하지 않기로 되어있는 메모리 영역에 대해

다른 RESERVED 섹션을 포함할 지도 모른다 .

■ RAMIMAGE 시스템이 그 커널 이미지와 사용자가 .bib 파일의

MODULES 와 FILES 섹션에 명시한 어떤 모듈을 로드하기 위해 사용할

수 있는 메모리 영역을 정의한다 . 런타임 이미지는 단지 한 RAMIMAGE

섹션을 가지고 있을 수 있고 그 주소 범위는 연속적이며 , 중복되어서는

안된다 .

■ RAM RAM 파일 시스템 과 실행 어플리케이션을 위해 메모리 영역을

정의한다 . 이 메모리 섹션은 연속함에 틀림없다 . 사용자가 불연속 메모

리 섹션을 필요로 한다면 , 장치에 나타나는 동적 RAM(DRAM) 확장에

관하여 , 사용자는 BSP 의 OAL 에서 OEMGetExtensionDRAM 함수를

구현함으로써 불연속한 메모리를 할당할 수 있다 . 윈도우 임베디드 CE

에서 불연속 실제 메모리를 최대 두개의 섹션까지 지윈한다 .

.BIB File CONFIG 섹션 CONFIG 섹션은 다음의 옵션을 포함하는 런타임 이미

지를 위한 부가적인 매개변수를 정의한다 :

■ AUTOSIZE RAMIMAGE 와 RAM 섹션을 자동으로통합하고 , 필요하다면

RAM 섹션으로부터 메모리를 잡고 또는 RAMIMAGE 에게 제공하여

RAMIMAGE 섹션에 사용되지 않은 메모리를 램에할당한다 . BOOTJUMP

페이지에 명시된 디폴트 영역을 사용함으로써 RAMIMAGE 섹션 안의 특정

영역으로 부트 점프 페이지를 이동한다 .

■ COMPRESSION 이미지에 쓰기 가능한 메모리 섹션을 자동적으로 압축한

다 . 이 선택을 위한 기본값은 ON 이다 .

■ FIXUPVAR Make Binary Image 실행하는 동안 커널 글로벌 변수를 초

기화한다 .

Page 18: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

50 제 2장 런타임 이미지 빌드와 배포

■ FSRAMPERCENT RAM 파일 시스템을 위해 사용된 램의 백분율을 설정

한다 .

■ KERNELFIXUPS 커널에 의해 Romimage.exe 에게 쓰기가능한 메모리를

재배치할 것을 지시한다 . 이 선택은 일반적으로 활성화 (ON) 되게 한다 .

■ OUTPUT Romimage.exe 가 Nk.bin 파일을 위해 출력 디렉토리로 사용하

는 디렉토리를 변경시킨다 .

■ PROFILE 프로파일러 이미지를 포함할지 여부를 지정한다

■ RAM_AUTOSIZE 마지막 XIP 섹션의 끝에 램의 크기를 확장한다 .

■ RESETVECTOR 지정한 위치로 점프 페이지를 재배치한다 . 이것은

9FC00000 으로부터 부팅하는 MIPS 프로세서가 필요하다 .

■ ROM_AUTOSIZE ROMSIZE_AUTOGAP 설정하는 것을 고려하는 XIP 영

역의 ROMFLAGS 크기를 조절한다 . 커널을 위해 다음의 선택을 구성한다 :

■ Demand paging 페이징 또는 페이징을 부분적으로 실행하기 전에 램안

으로 파일을 완전히 복사한다

■ Full kernel Mode 커널 모드로 모든 OS 쓰레드를 실행한다 . 그런데 그

시스템은 공격에 취약하지만 성능이 향상된다 .

■ Trust only ROM modules 단지 신뢰할 수 있는 ROM 에서 파일을 기록

한다 .

■ Flush the X86 TLB on X86 systems 성능이 향상된다 그러나 보안 위

험을 추가한다 .

■ Honor the /base linker setting DLLs 에서 /base linker 설정을 사용

할지 여부를 정의한다 .

■ ROMOFFSET 사용자가 저장 위치와 다른 메모리 위치로 런타임 이미지를

수행할 수 있게 한다 . 예를 들면 , 사용자는 FLASH 메모리에 있는 런타임

이미지를 저장할 수 있다. 그리고 RAM으로부터 그것을 복사하고 실행한다.

■ ROMSIZE 바이트에서 ROM 의 크기를 지정한다 .

■ ROMSTART ROM's 의 시작 주소를 지정한다 .

■ ROMWIDTH 어떻게 데이터 비트의 수를 그리고 Romimage.exe 가 런타

임 이미지를 분할하는지를 지정한다 . Romimage.exe 은 하나의 파일에 전

체의 런타임 이미지를 넣을 수 있다 . 짝수와 홀수의 16-bit 단어의 두 파일

로 그 런타임 이미지를 분할한다 , 또는 짝수와 홀수의 8-bit 바이트의 네 가

지 파일을 생성한다 .

Page 19: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 51

■ SRE Romimage.exe 가 .sre 파일을 생성여부를 결정한다 . Motorola S-

record(SRE) 는 대부분의 ROM 버너에 의해 인식된 파일 형식이다 .

■ X86BOOT x86 의 벡터 주소 재설정에서 JUMP 명령을 추가할지 여부를

지정한다 .

■ XIPSCHAIN 사용자가 다중의 파일로의 이미지를 쪼갤 수 있도록 ,

Chain.bin 과 Chain.lst 파일의 생성을 XIP 체인에 설정할 수 있게 한다 .

.BIB File MODULES 과 FILES 섹션 BSP 와 OS 설계 개발자는 빈번히

MODULES 와 런타임 이미지에게 새로운 구성요소를 더하기 위해서 .bib 파일의

FILES 영역을 편집해야 한다 . MODULES 영역이 더 많은 구성 선택을 지윈할지

라도 , MODULES 에 대한 형식과 FILES 영역은 실질적으로 동일하다 . 그 중요

한 차이는 FILES 영역이 압축되는 파일을 출력하는 동안 MODULES 영역은 XIP

를 지윈하는 메모리에 압축되지 않은 파일을 기록하는 것이다. 운영체제가 FILES

로 접근하기 위해서는 데이터의 압축을 풀어야 한다 .

다음의 리스트 작성은 Platform.bib 파일로부터 두 가지 작은 MODULES 과

FILES 영역을 보여준다 . Device Emulator BSP 의 Platform.bib 를 참고하도록

한다 .

MODULES

; Name Path Memory Type

; -------------- ---------------------------- -----------

; @CESYSGEN IF CE_MODULES_DISPLAY

IF BSP_NODISPLAY !

DeviceEmulator_lcd.dll $(_FLATRELEASEDIR)\DeviceEmulator_lcd.dll NK SHK

IF BSP_NOBACKLIGHT !

backlight.dll $(_FLATRELEASEDIR)\backlight.dll NK SHK

ENDIF BSP_NOBACKLIGHT !

ENDIF BSP_NODISPLAY !

; @CESYSGEN ENDIF CE_MODULES_DISPLAY

FILES

; Name Path Memory Type

; -------------- -------------------------------- -----------

; @CESYSGEN IF CE_MODULES_PPP

dmacnect.lnk $(_FLATRELEASEDIR)\dmacnect.lnk NK SH

; @CESYSGEN ENDIF CE_MODULES_PPP

사용자는 파일 참조를 위한 MODULES 에 있는 다음의 선택과 FILES 섹션을 정

의할 수 있다 :

■ NAME 메모리 테이블에서 나타나는 모듈 또는 파일의 이름이다 . 이 이름

은 보통 런타임 이미지에 있는 파일의 이름과 같은 일반적으로 동일하다 .

Page 20: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

52 제 2장 런타임 이미지 빌드와 배포

■ PATH Romimage.exe 가 런타임 이미지로 통합하는 파일에 대한 완전한

경로 .

■ MEMORY Romimage.exe 가 모듈 또는 파일을 로드하는 Config.bib 파일

의 MEMORY 섹션에 있는 메모리 영역의 이름을 참조한다 . MEMORY 섹션

에서 정의된 NK 영역에서 파일을 통합하기 위해 NK 에 일반적으로 설정한

다 .

■ Section Override 사용자가 FILES 섹션에 모듈과 MODULES 섹션에

FILES 를 지정할 수 있게 한다 . 본질적으로 , Romimage.exe 는 항목에 상

주시키고 지정된 섹션의 회윈으로서 항목을 다루는 섹션을 무시한다 . 이 매

개변수는 선택 사항이다 .

■ TYPE 표 2-3 에 나타나는 것과 같이 , 파일 유형과 플래그의 조합을 지정

할 수 있다 .

표 2-3 MODULES 과 FILES 섹션의 파일 유형 정의

MODULES 와 FILES 섹션 MODULES 섹션 Only

■ S 이 파일은 시스템 파일이다 .

■ H 이 파일은 숨겨진 파일이다 .

■ U 압축되지 않은 파일이다 . ( 기본설정은 압축 파일이다 .)

■ N 이 모듈은 신뢰할 수 없다 .

■ D 이 모듈은 디버깅할 수 없다 .

■ K Romimage.exe 에게 DLL 의 공적노출에서 고정 가상의 주소를 할당할것을 지시하고 사용자 모드 보다 커널모드로 모듈을 실행한다 . 드라이버는가지고 있는 커널 모드로 실행되면서그 밑에 있는 하드웨어로 직접적인 접근을 한다 .

■ R 리소스 파일을 압축한다 .

■ C 파일에서 모든 데이타를 압축한다. 파일이 이미 RAM 에 있다면 , 그것은RAM 의 새로운 섹션 안에 다시 압축을줄여질 것이다 . 그런데 그것은 더 높은RAM 소비로 결과된다 .

■ P per-module 방식으로 CPU 유형을 검사하지 않는다 .

■ X 모듈을 서명하고 ROM 에 있는 서명을 포함한다 .

■ M 커널은 수요되는 모듈에 페이지를하지 않는다는 것을 신호한다 . ( 페이징수요의 영향에 대하여 3 장에서 더 많이보기로 한다 .)

■ L ROM DLL 을 분할 하지 않기 위해Romimage.exe 를 지시한다 .

Page 21: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 53

Conditional .bib 파일 처리 .bib 파일이 환경 변수와 SYSGEN 변수에 기반하

는 조건문을 지윈한다는 것을 주목하자 . 사용자는 카탈로그 항목을 통해 환경 변

수를 설정할 수 있다 . 그리고 , 특정한 모듈이나 다른 파일을 포함하거나 배제하

기 위한 IF 문에서 .bib 파일의 변수를 검사한다. SYSGEN 변수에, @CESYSGEN

IF 문을 대신 사용한다 .

이전의 섹션에 있는 MODULES 와 FILES 리스트 작성은 @CESYSGEN IF 의 사

용과 SYSGEN 과 환경 변수에 기반하는 조건을 처리하는 데 대한 IF 문을 설명

한다 . 예를 들면 , MODULES 섹션에 있는 @CESYSGEN IF

CE_MODULES_DISPLAY 문은 OS 설계의 화면표시 구성요소를 포함한다면

BSP 가 자동적으로 화면 표시 드라이버를 포함해야 한다는 것을 지정한다 . 그림

2-5 와 같이 , 사용자가 화면표시를 사용하는 OS 프로젝트에 대해 비주얼 스튜

디오에서 Catalog Items 뷰를 화면 출력한다면 , 플랫폼 빌더가 BSP 의 화면표시

구성요소를 자동적으로 추가한다는 것을 검증할 수 있다 .

그림 2-5 화면 표시 항목에 따라 달라진 CORE OS 구성요소 .

Registry 파일레지스트리 파일 (.reg) 은 윈격 장치로 시스템 레지스트리를 초기화하는 데 이용

된다 . CE .reg 파일이 헤더와 버전 정보로 시작하지 않는 것만을 제외하고 , 이

Page 22: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

54 제 2장 런타임 이미지 빌드와 배포

파일은 윈도우 데스크톱 운영체제의 레지스트리 파일과 거의 동일하다 . 사용자

가 실수로 개발용 컴퓨터에 있는 CE .reg 파일을 더블클릭하고 사용자가 바탕화

면 레지스트리에 대한 설정을 추가하는 것을 윈한다는 것을 확인한다면 대화 상

자는 .reg 파일이 유효한 레지스트리 스크립트가 아니라고 사용자에게 알리는 것

처럼 보인다 . 다른 차이는 사용자가 선택된 카탈로그 항목에 따라서 레지스트리

설정을 가져올 수 있도록 CE .reg 파일이 .bib 파일과 비슷한 조건문을 포함할 수

있다는 것이다 .

Device Emulator BSP 의 Platform.reg 파일 일부의 다음 코드는 makeimage

실행전의 처리 조건을 설명한다 .

; Our variables

#define BUILTIN_ROOT HKEY_LOCAL_MACHINE\Drivers\BuiltIn

;#define PCI_BUS_ROOT $(BUILTIN_ROOT)\PCI

#define DRIVERS_DIR $(_PUBLICROOT)\common\oak\drivers

; @CESYSGEN IF CE_MODULES_RAMFMD

; @CESYSGEN IF FILESYS_FSREGHIVE

; HIVE BOOT SECTION

[HKEY_LOCAL_MACHINE\init\BootVars]

"Flags"=dword:1 ; see comment in common.reg

; END HIVE BOOT SECTION

; @CESYSGEN ENDIF FILESYS_FSREGHIVE

; @CESYSGEN IF CE_MODULES_PCCARD

; @XIPREGION IF DEFAULT_DEVICEEMULATOR_REG

IF BSP_NOPCCARD !

#include "$(_TARGETPLATROOT)\src\drivers\pccard\pcc_smdk2410.reg"

#include "$(DRIVERS_DIR)\pccard\mdd\pcc_serv.reg"

[HKEY_LOCAL_MACHINE\Drivers\PCCARD\PCMCIA\TEMPLATE\PCMCIA]

"Dll"="pcmcia.dll"

"NoConfig"=dword:1

"NoISR"=dword:1 ; Do not load any ISR.

"IClass"=multi_sz:"{6BEAB08A-8914-42fd-B33F-61968B9AAB32}=

PCMCIA Card Services"

ENDIF ; BSP_NOPCCARD !

; @XIPREGION ENDIF DEFAULT_DEVICEEMULATOR_REG

; @CESYSGEN ENDIF CE_MODULES_PCCARD

Database 파일윈도우 임베디드 CE 는 기본 Object Store 을 설정하는 것이기 때문에 데이터베

이스 (.db) 파일에 의존한다 . object store 는 트랜잭션 - 기반 저장 메커니즘이

다 . 바꾸어 말하면 , 그것은 운영체제와 어플리케이션이 지속적인 자료 저장소에

대해 사용할 수 있는 RAM 에 있는 데이터베이스를 위한 저장소이다 . 예를 들면 ,

운영체제는 스택과 메모리 힙을 관리 , 파일을 압축하거나 풀고 , 그리고 롬 - 기

반 어플리케이션과 램 - 기반 자료를 통합하기 위해 개체 저장을 사용한다 . 자료

Page 23: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 1 과 : 런타임 이미지 빌드 55

가 개체 저장에 쓰여지고 있는 동안 트랜잭션 - 지향 저장 메커니즘의 본질은 갑

작스러운 파워 손실의 사건에서도 자료의 완전성을 보증한다 . 시스템이 다시 시

작할 때 , 윈도우 임베디드 CE 는 미결정 트랜젝션를 완료하거나 중단에 앞서 마

지막으로 성공한 구성으로 복귀한다 . 시스템 파일에 , 마지막으로 성공한 구성은

윈도우 임베디드 CE 가 ROM 으로부터 처음의 설정을 다시 로드해야 한다는 것

을 의미할 수도 있다 .

File System 파일파일 시스템 (.dat) 파일 , 특히 Platform.dat 와 Project.dat, 램 파일 시스템을 포

함한 설정을 초기화한다 . 사용자가 대상 장치에 있는 런타임 이미지를 완벽하게

시작할 때 , Filesys.exe 는 RAM 파일 시스템 디렉토리 , 파일 , 그리고 대상 장

치에 있는 링크를 새로 만들기 위해 이 .dat 파일을 처리한다 . 그러나 사용자가

빌드 시스템 파일이 Initobj.dat 로 이름지은 것은 궁극적으로 모든 .dat 파일에 병

합하기 때문이다 . 파일 시스템 설정을 정의하기 위해서 현존하는 .dat 파일도 사

용할 수 있지만 , Platform.dat 파일은 Project.dat 파일이 OS 디자인에 적용되는

동안 하드웨어 - 관련 항목이 일반적으로 사용된다 . ( 만약 아닌 경우 ) .dat 파일

에서 조건부 차단한다 . 예를 들면 , Project.dat 파일을 사용자 지정하는 것에 의

해 , 사용자는 또한 런타임 이미지를 위한 윈도우 디렉토리에 루트 디렉토리를 정

의할 수 있다 . 기본적으로 , ROM 이미지에 놓여진 항목은 윈도우 디렉토리에서

나타난다 . 그러나 .dat 파일을 사용하는 것에 의해 , 사용자는 또한 파일을 윈도

우 디렉토리 밖에서 나타나게 만들 수 있다 . 사용 자는 또한 복사하거나 ROM 윈

도우 디렉토리에서 파일에 링크할 수 있다 . 사용자가 데스크톱에 바로 가기를 위

치시키는 것을 윈하거나 시작 메뉴에 사용자의 어플리케이션으로 링크를 추가한

다면 , 이것은 특히 유용하다 . .reg 와 .bib 파일과 유사하게 사용자는 IF 와 IF !

를 사용할 수 있다 . ( 만약 아닌 경우 ) .dat 파일에서 조건부 차단한다 .

다음의 리스트 작성은 Project.dat 파일이 Program Files 과 My Documents 라

는 이름의 새로운 root 디렉토리를 두 개 생성하고 “Progrma Files” 아래에

“My Projects” 라는 서브 디렉토리를 생성하고 “My Documents” 에

“Windows” 디렉토리에 있는 “Myfiles.doc” 파일을 복사 및 매핑하는 방법에

대한 설명이다 .

Root:-Directory("Program Files")

Root:-Directory("My Documents")

Directory("\Program Files"):-Directory("My Projects")

Directory("\My Documents"):-File("MyFile.doc", "\Windows\Myfile.doc")

Page 24: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

56 제 2장 런타임 이미지 빌드와 배포

요약 정리빌드 시스템의 완전한 이해는 개발 시간을 줄이고 프로젝트 비용을 절감하는데

도움이 된다 . 사용자가 소스 코드 변화를 빨리 검사하는 것과 불필요한 컴파일

주기 없이 빌드 과정에서 각각의 단계 동안 수행되는 단계를 잘 알아야 한다 . 사

용자는 또한 OS 디자인을 생성하고 능률적으로 유지하기 위하여 .reg, .bib, .db,

그리고 .dat 파일과 같은 런타임 이미지 구성 파일의 목적과 위치를 알아야 한다 .

윈도우 임베디드 CE 빌드 시스템은 Make Run-Time 이미지 단계 동안 다양한

.reg, .bib, .db, 그리고 .dat 파일을 빌드 시스템이 그 최종적인 런타임 이미지를

구성하기 위해 사용하는 통합 파일 안에서 합친다 .

사용자가 특정한 설정 또는 파일을 대상 장치에 런타임 이미지를 로드해야 하지

않고 최종적인 이미지로 그것을 만들었다는 것을 검증하는 것을 윈한다면 , 이 파

일을 확인하는 것은 좋은 생각이다 . 사용자는 OS 디자인의 Release 디렉토리에

서 다양한 런타임 이미지 구성 파일을 발견할 수 있다 . 사용자의 예상항목이 없

다는 것을 깨닫게 된다면 , 조건문과 환경 변수를 확인한다 . SYSGEN 변수는 사

용자의 카탈로그 항목에 정의되었다 . 빌드 시스템은 Make Run-Time Image 단

계 동안 다음의 런타임 이미지 구성 파일을 생성한다 :

■ Reginit.ini Platform.reg, Project.reg, Common.reg, IE.reg,

Wceapps.reg, 그리고 Wceshell.reg 파일의 결합 .

■ Ce.bib Config.bib, Platform.bib, Project.bib, 그리고 subproject bib 파

일의 결합 .

■ Initdb.ini Common.db, Platform.db, 그리고 Project.db 파일의 결합 .

■ Initobj.dat Common.dat, Platform.dat, 그리고 Project.dat 파일의 결합 .

Page 25: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 2 과 : 빌드 구성 파일의 편집 57

제 2과 : 빌드 구성 파일의 편집런타임 이미지 구성 파일 이외에 , 윈도우 임베디드 CE 는 또한 기능적인 바이너

리 구성요소로 소스 코드를 컴파일하고 링크하기 위해 빌드 구성 파일을 사용한

다 . 명시적으로 , 빌드 시스템은 소스 코드 구성 파일의 세가지 형태에 의존한다 :

그것은 Dirs, Sources, 그리고 Makefile 이다 . 이 파일은 필수로 거쳐가는 파일

로 소스 - 코드 디렉토리에 대한 정보 , 컴파일하기 위한 소스 코드 파일 , 그리고

바이너리의 구성요소 중에서 어떤 유형으로든 빌드하기 위한 빌드 도구

(Build.exe), 컴파일러 , 링커 (Nmake.exe) 를 제공한다 . CE 개발자로서 , 사용

자는 공개 카탈로그 항목을 복제할 때 , 제 1 장에서 제시한 절차에 따라 파일을

편집해야 한다 .

이 과정을 마치면 사용자는 다음을 할 수 있다 :

■ 빌드 과정 동안 사용된 소스 코드 구성 파일을 식별한다 .

■ 어플리케이션 , DLLs, 그리고 정적 라이브러리를 생성시키기 위해 빌드 구성 파일을 편집한다 .

예상 학습 시간 : 25 분 .

Dirs 파일Dirs 파일은 빌드 과정에 포함되는 소스 - 코드 파일을 포함하는 디렉토리를 검

사한다 . Build.exe 가 실행한 폴더에서 Dirs 파일을 찾을 때 , 그것은 서브디렉토

리에서 소스 코드를 빌드하기 위해 Dirs 파일로 참조된 서브디렉토리를 거쳐가

야 한다 . 다른 기능 중에서 , 이 메커니즘은 런타임 이미지의 부분을 선택적으로

업데이트하는 것을 가능하게 한다 . 사용자가 Subproject1 디렉토리에서 소스 코

드를 변경하는 경우 , 사용자는 Subproject1 디렉토리에 Build.exe 를 실행하는

것에 의해 하위 프로젝트를 선택적으로 리빌드할 수 있다 . 사용자는 조건문을 사

용함으로써 Dirs 파일에서 일치한 디렉토리 참조를 제거하고 소스 코드 트리에

있는 빌드 과정으로부터 디렉토리를 또한 배제할 수 있다 .

Dirs 파일은 간단한 내용구조를 가진 텍스트 파일이다 . 사용자가 백슬래시를 가

진 다음의 라인에서 계속되는 각각의 라인을 종료한다면 , 사용자는 DIRS,

DIRS_CE, 또는 OPTIONAL_DIRS, 그리고 단일 또는 다중 라인 위에 서브디렉

토리의 리스트를 지정 또는 사용할 수 있다 . DIRS 키워드 사용 하에 참조된 디렉

토리는 항상 빌드 과정에 포함되어 있다 . DIRS_CE 키워드 사용하는 경우 대신

에 , 소스 코드가 윈도우 임베디드 CE 런타임 이미지를 위해 명시적으로 쓰여지

고 Build.exe 는 단지 소스 코드를 빌드한다 . OPTIONAL_DIRS 키워드는 선택

적인 디렉토리를 지정한다 . 그러나 Dirs 파일이 단지 하나의 DIRS 지시어를 포

Page 26: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

58 제 2장 런타임 이미지 빌드와 배포

함할 수 있는 것을 염두에 둔다 . Build.exe 는 순서로 디렉토리를 처리하고 , 그

들을 나열하게 된다 . 즉 확실한 전제조건은 디렉토리이름의 나열이다 . 또한 모

든 디렉토리를 포함하기 위해 와일드 카드 “*” 를 사용할 수도 있다 .

기본값 윈도우 임베디드 CE 구성요소로부터 가져온 다음의 리스트 작성에서 ,

Dirs 파일을 이용함으로써 빌드 과정에 소스 코드 디렉토리를 포함하는 방법을

보여준다 .

# C:\WINCE600\PLATFORM\DEVICEEMULATOR\SRC\Dirs

---------------------------------------------------

DIRS=common \

drivers \

apps \

kitl \

oal \

bootloader

# C:\WINCE600\PLATFORM\H4SAMPLE\SRC\DRIVERS\Dirs

-----------------------------------------------------

DIRS= \

# @CESYSGEN IF CE_MODULES_DEVICE

buses \

dma \

triton \

# @CESYSGEN IF CE_MODULES_KEYBD

keypad \

# @CESYSGEN ENDIF CE_MODULES_KEYBD

# @CESYSGEN IF CE_MODULES_WAVEAPI

wavedev \

# @CESYSGEN ENDIF CE_MODULES_WAVEAPI

# @CESYSGEN IF CE_MODULES_POINTER

touch \

tpagent \

# @CESYSGEN ENDIF CE_MODULES_POINTER

# @CESYSGEN IF CE_MODULES_FSDMGR

nandflsh \

# @CESYSGEN ENDIF CE_MODULES_FSDMGR

# @CESYSGEN IF CE_MODULES_SDBUS

sdhc \

# @CESYSGEN ENDIF CE_MODULES_SDBUS

# @CESYSGEN IF CE_MODULES_DISPLAY

backlight \

# @CESYSGEN ENDIF CE_MODULES_DISPLAY

# @CESYSGEN IF CE_MODULES_USBFN

usbd \

# @CESYSGEN ENDIF CE_MODULES_USBFN

# @CESYSGEN ENDIF CE_MODULES_DEVICE

# @CESYSGEN IF CE_MODULES_DISPLAY

display \

# @CESYSGEN ENDIF CE_MODULES_DISPLAY

Page 27: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 2 과 : 빌드 구성 파일의 편집 59

노트 Solution Explorer 의 Dirs 파일 편집

윈도우 임베디드 CE 6.0 R2 에 통합된 플랫폼 빌더가 있는 비주얼 스튜디오의 Solution Explorer는 OS 디자인 계획에서 윈도우 임베디드 CE 디렉토리 구조의 동적인 뷰를 생성시키기 위해 DIRS 파일을 사용한다 . 그러나 사용자는 변화된 빌드 순서를 초래할 수 있는 솔루션 익스플로러의 편집된DIRS 파일 때문에 , 솔루션 익스플로러에 있는 디렉토리를 추가하거나 제거해서는 안된다 . 빌드 오류로 생긴 문제 해결을 위하여 , 두 번째 빌드를 요구하는 결과를 초래 할 수도 있다 .

Sources Files 만일 C:₩Wince600₩OSDesigns₩OSDesign1 와 같은 운영 체제 프로젝트의

폴더와 파일을 검토 한다고 하면 프로젝트는 기본값으로 Dir 파일을 포함하고 있

지 않는 것을 발견 할 수 있다 . 커스터마이징된 컴포넌트와 응용프로그램을 위

한 하위프로젝트를 포함 시키려면 , 대신에 각 하위 프로젝트의 루트 폴더에서

Sources 파일을 찾아 볼 수 있다. Sources 파일은 빌드 지시문(build directives)

을 포함하여 Dir 가 제공하지 못하는 소스 - 코드 (source-code) 파일의 자세한

정보를 제공한다 . 그럼에도 불구하고 , 소스 - 코드의 디렉토리는 오직 한 개의

소스 파일이나 Dir 파일을 소유 할 수 있으나 두 개 모두 다 소유 할수는 없다 . 즉 ,

디렉토리는 소스 파일과 함께 코드가 더 있는 하위 디렉토리를 소유 할 수 없다 .

빌드 프로세스 도중 , Nmake.exe 는 Sources 파일을 사용하여 어떤 유형의 빌

드 (.lib, .dll, or .exe) 를 정의 할 것인 지와 어떻게 정의 할 것인지를 정한다 . Dir

파일과 유사하게 , Sources 파일은 백슬래시 (₩) 를 사용하여 줄을 종료하고 선

언문을 다음 줄로 진행 하지 않을 경우 한 줄로 선언문을 지정하도록 한다 .

다음 코드는 장치 에뮬레이터 BSP (Device Emulator BSP ) 에 있는 Sources 파

일의 내용을 보여준다 . 기본적으로 이 파일은 C:₩Wince600₩Platform

₩DeviceEmulator₩Src₩Drivers₩Pccard 폴더에서 찾아 볼 수 있다 .

WINCEOEM=1

TARGETNAME=pcc_smdk2410

TARGETTYPE=DYNLINK

RELEASETYPE=PLATFORM

TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \

$(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib

SOURCELIBS=$(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\pcc_com.lib

DEFFILE=pcc_smdk2410.def

DLLENTRY=_DllEntryCRTStartup

INCLUDES=$(_PUBLICROOT)\common\oak\drivers\pccard\common;$(INCLUDES)

SOURCES= \

Init.cpp \

Page 28: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

60 제 2장 런타임 이미지 빌드와 배포

PDSocket.cpp \

PcmSock.cpp \

PcmWin.cpp

#xref VIGUID {549CAC8D_8AF0_4789_9ACF_2BB92599470D}

#xref VSGUID {0601CE65_BF4D_453A_966B_E20250AD2E8E}

다음과 같은 지시문을 소스파일에서 정의 할 수 있다 :

■ TARGETNAME 이 지시문은 파일 확장명이 없는 대상 파일의 이름이다 .

■ TARGETTYPE 빌드할 유형의 파일을 정의 , 다음과 같음 :

■ DYNLINK 동적 연결 라이브러리 (dynamic-link library (DLL)).

■ LIBRARY 정적 연결 라이브러리 (static-link library (LIB)).

■ PROGRAM 실행 파일 (EXE).

■ NOTARGET 파일을 빌드하지 않음 .

■ RELEASETYPE 다음과 같은 대상 파일에Nmake.exe이 위치하는 디렉토

리 지정 :

■ PLATFORM PLATFORM₩(BSP Name)₩<Target>.

■ OAK, SDK, DDK %_PROJECTROOT%₩Oak₩<Target>.

■ LOCAL 현 디렉토리 .

■ CUSTOM TARGETPATH 에 지정된 디렉토리 .

■ MANAGED %_PROJECTROOT%₩Oak₩<Target>₩Managed.

■ TARGETPATH RELEASETYPE=CUSTOM 경로 정의 .

■ SOURCELIBS 최종 바이너리 출력 생성을 위한 TARGETNAME 내에서

지정된 대상 파일과 연결되는 라이브러리 지정 . 이 옵션은 일반적으로 .lib

파일을 생성하는 데 사용되나 .dll 또는 .exe 파일 을 위한 사용은 제외 .

■ TARGETLIBS 최종 바이너리 출력 연결을 위한 추가 라이브러리와 개체

파일 지정 , 일반적으로 .dll 또는 .exe 파일을 생성하는데 사용되나 .lib 파

일은 제외

■ INCLUDES 포함된 파일을 검색을 위한 추가 디렉토리 나열 .

■ SOURCES 특정한 컴포넌트를 사용하기 위한 소스파일 정의 .

■ ADEFINES 어셈블러를 위한 매개 변수 정의 .

■ CDEFINES 컴파일러를 위한 매개변수 정의, DEFINE 문에서 추가IFDEF

문을 사용 할 수 있음 .

■ LDEFINES 연결 정의 설정 .

Page 29: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 2 과 : 빌드 구성 파일의 편집 61

■ RDEFINES 리소스 컴파일러를 위한 DEFINE 문을 지정 .

■ DLLENTRY DLL 을 위한 진입점 정의 .

■ DEFFILE DLL 의 내보내기 기호를 보함하는 .def 정의 .

■ EXEENTRY 실행할 수 있는 파일의 진입점 정의 .

■ SKIPBUILD 대상의 빌드를 실제로 빌드하지 않고 대상의 빌드를 성공으

로 표시 .

■ WINCETARGETFILE0 현 디렉토리를 빌드하기 이전에 빌드 하여야 할

비 표준 파일을 지정 .

■ WINCETARGETFILES 이 매크로 정의는 현 디렉토리에서 모든 다른 대

상에 연결되는 Build.exe 를 빌드한 후 Build.exe 를 빌드하는 비표준 대상

파일을 지정 .

■ WINCE_OVERRIDE_CFLAGS 기본 설정을 변경하기 위한 컴파일러 플래

그 정의

■ WINCECPU 특정한 CPU 를 위한 빌드와 특정한 CPU 유형에서 필요한 코

드를 위한 지정

노트 빌드 전과 후의 특정한 작업 실행

표준 디렉티브에 추가하면 , WINDOWS EMBEDDED CE SOURCES 파일은 PRELINK_PASS_CMD 와OSTLINK_PASS_CMD 디렉티브를 지윈한다 . 이 디렉티브들을 사용하여 명령 - 줄 (CMD.EXE) 도구와 같은빌드 프로세스전과 후의 배치파일 (.BAT) 에 기반을 둔 도구를 사용하여PRELINK_PASS_CMD=PRE_ACTION.BAT 와 POSTLINK_PASS_CMD=POST_ACTION.BAT 같은 사용자화 작업을 실행할 수 있다 . 이 것은 매우 유용한데 , 예를 들면 , 응용프로그램을 개발 할 때 릴리즈 디렉토리에추가로 파일을 복사할 때 유용하다 .

Makefile 파일하위프로젝트 폴더를 자세히 살펴보면 , Makefile 이라는 이름의 파일을 찾아 볼

수 있는데 , 이 파일은 Nmake.exe 에 프로세싱 , 디렉티브 , 명령 , 매크로 와 다

른 식 (expression) 의 기본 값을 제공한다 . 그럼에도 불구하고 , Windows

Embedded CE 에서는 , 이 Makefile 은 %_MAKEENVROOT%₩Makefile.def

를 참조하는 단일 줄 만을 포함한다 . 기본 값에 의해 , %_MAKEENVROOT% 환

경 변수는 C:₩Wince600₩Public₩Common₩Oak₩Misc 폴더로 포인트하고

이 위치에 있는 Makefile.def 파일은 모든 CE 컴포넌트의 표준 Makefile 이다 .

그러므로 , 이 파일을 수정해서는 안된다 . 다른 것 사이에서 , Makefile.def 파일

은 소스파일을 끌어오기 위한 !INCLUDE $(MAKEDIR)₩sources 같은 구문을

포함하고 있는데 이는 하위프로젝트 폴더로 부터 소스파일을 지정한다 .

Page 30: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

62 제 2장 런타임 이미지 빌드와 배포

Nmake.exe 대상 파일을 빌드하도록 변경하기 위해서는 하위프로젝트 폴더에

있는 (Sources 파일을 수정하여야한다 .

학습 요약Windows Embedded CE 6.0 R 개발 환경은 런타임 이미지를 위한 라이브러리

컴포넌트 함수 안에서 Build.exe 와 Nmake.exe 컴파일과 연결 소스 코드를 어

떻게 제어하는지를 Makefile, Sources, 와 Dir 파일에 의존한다 . Dirs 파일을 사

용하여 빌드 프로세스 내부에 포함되어있는 소스 코드 디렉토리를 지정하거나

Sources 파일로 컴파일과 빌드의 자세한 지시문을 지정 할 수 있다 . 반면 ,

Makefile 은 어떤 사용자에 의한 수정을 필요로 하지 않는다 . 이 것은 단지 빌드

시스템을 위하여 기본 Makefile.def 파일과 일반 사전처리 지시 ( 문 ), 명령 ( 문 ),

매크로 , 와 다른 프로세스 지시 ( 문 ) 등을 참조 할 뿐이다 . 만일 , 카탈로그 항목

을 복사하기를 윈하거나 컴포넌트를 효과적으로 생성하기 윈한다면 사용자는 이

파일의 사용 목적과 어떻게 빌드 프로세스를 제어 할 수 있는지에 대하여 잘 이

해 하여야 한다 .

Page 31: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

학습 3: 빌드 결과 분석 63

학습 3: 빌드 결과 분석개발자는 소프트웨어 - 개발 주기중 빌드 오류를 경험하게 된다 . 사실은 , Visual

Studio 2005 ®에서 사용 할 수 있는 IntelliSense 와 다른 코딩 보조 프로그램로

오타와 구문오류를 줄이는데 도움을 줄 수 있음에도 불구하고 컴파일 오류를 사

용하여 코드를 위한 구문을 검토하는 것이 일반화 되어있다 . 구문 오류를 정정하

는 것은 과히 어렵지 않은데 , 왜냐하면 출력창에서 관계된 오류 메시지를 두번 -

클릭함으로 소스 코드의 심각한 오류 줄로 이동 할 수 있기 때문이다 . 그러나 , 컴

파일 오류만이 하나의 빌드 오류로서 발생 할 수 있다 . 다른 일반 오류들로서는

math 오류 , 식 계산 오류 (expression evaluation errors ), 링커 오류 (linker

errors ) 와 런타임 이미지 구성과 연관된 오류등 이 있다 . 오류 메시지에 추가해

서 , 빌드 시스템은 상태 메시지 생성과 빌드의 문제점에 대하여 분석하거나 진단

하는데 도움을 줄 수있다는 경고를 준다 . 빌드 프로세스 중 발생하는 정보의 양

은 방대하며 , 만일 , 빌드 오류를 효과적으로 확인 , 위치 추적 , 해결하려면 빌드

메시지의 여러 다른 유형과 일반 포맷에 대하여 알아야 한다 .

이 과정을 마치면 사용자는 다음을 할 수 있다 :

■ 빌드 리포트 찾기와 분석 .

■ 빌드 문제 진담과 해결 .

예상 학습 시간 : 15 분 .

빌드 리포트 이해Visual Studio 의 통합개발환경 (IDE) 또는 명령 프롬프트에서 빌드를 실행 할때

, 빌드 프로세스는 빌드 일정한 양의 정보를 출력한다 . 빌드 시스템은 이 정보를

Build.log 파일 에서 추적한다 . 자세한 컴파일 또는 링커 경고와 오류는

Build.wrn 과 Build.err 에서 찾아 볼 수 있다 . 만일 Visual Studio 의 빌드 메뉴

에 있는 상호 작용 명령문을 사용하여 운영체제 (OS) 설계를 위한 완전 Build 나

Sysgen 작업을 실행하면 빌드 시스템은 이 파일들을 %_WINCEROOT% ( 기본

값은 C:₩Wince600) 폴더에 작성한다 . 반면 , 만일 특정한 컴포넌트만을 위하여

빌드를 설정 할 경우 솔루션 탐색기의 하위프로젝트 폴더에서 마우스의 오른쪽

버튼을 누르거나 컨텍스트 메뉴에서 Build 명령을 누르거나 하면 빌드 시스템은

지정 디렉토리에 이 파일들을 작성한다 . 둘 중 어느 옵션을 선택 해도 , Build.wrn

와 Build.err 파일은 빌드 프로세스중 경고와 오류가 발생 할 때만 존재 한다 . 그

러나 , 이 파일들은 메모장 또는 다른 문자 에디터에서 열거나 구문 분석 (parse)

을 할 필요는 없다 . CE 6.0 R2 를 위한 Visual Studio 2005 의 플랫폼 빌더는 출

력 창에 빌드 프로세스 중 이 정보를 표시한다 . 뷰 메뉴의 다른 창 아래있는 오류

Page 32: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

64 제 2장 런타임 이미지 빌드와 배포

목록 (Error List) 을 클릭함으로 오류 목록 창에서 상태 메시지 , 경고 , 에러등을

표시 할 수 있다 .

그림 2-6 은 도킹되지 않은 뷰에서 출력 창과 오류 목록 창을 나타낸 것이다 . 만

일 목록 상자로 부터 출력 보기에서 Build 를 선택하면 출력 창은 Build.log 의 콘

텐츠를 표시한다 . 오류 목록 창은 Build.wrn 와 Build.err 파일의 콘텐츠를 오류

목록 창에 표시한다 .

그림 2-6 Visual Studio 에서 빌드 정보의 출력 과 오류 목록 창

구체적으로 , 다음과 같은 정보들을 빌드 로그 파일에서 찾아 볼 수 있다 .

■ Build.log 빌드 프로세스중 각 단계의 개인 명령 문제점에 관한 정보를 포

함한다 . 이 정보는 일반 빌드 프로세스 와 특정 빌드 오류를 둘 다 분석하

는데 유용하다 .

Page 33: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

학습 3: 빌드 결과 분석 65

■ Build.wrn 빌드 프로세스 중 경고 발생에 관한 정보를 포함한다 . 가능 하

면 , 경고에 대한 이유를 제거하거나 식별하려고 한다 . 이 정보는 Build.wrn

에 있는 것처럼 Build.log 에도 포함되어 있다 .

■ Build.err 빌드 프로세스 중 빌드 오류 발생시 특정 정보를 포함하고 있다 .

이 정보는 Build.log 에서 추가 정보와 함께 사용 가능하다 . 이 파일은 오류

가 발생 될 때만 생성된다 .

노트 빌드 단계 확인하기

빌드 시스템은 BUILD.LOG 파일에서 건너 뛰거나 빌드 단계로 들어선 것을 계속해서 추적한다 . 예를들면 , CEBUILD: SKIPPING DIRECTLY TO SYSGEN PHASE 입력은 빌드 시스템이 컴포넌트의 컴파일 단계를건너뛴 것을 지적하여 준다 . SYSGEN 단계가 어디서 부터 시작 되는지 , SYSGEN 에서 BUILD 로 어떻게 빌드 프로세스가 전환 되는지, 어떻게BUILD가 최종적으로 MAKEIMG 로 되는지를 확인 할 수 있다.

빌드 문제 해결빌드 로그 파일을 분석하는 것은 일반 빌드 프로세스에서 빌드를 통찰 할 수있게

하여 주는데 , 이 것은 빌드 오류의 문제점을 찾는데 매우 유용하다 . 만일 오류 메

시지가 소스코드 파일과 연관되어 있다면 오류 목록 창에서 메시지 입력을 더블

클릭함으로써 연관된 코드의 줄로 이동 할 수 있다 . 그러나 , 모든 오류가 소스 코

드와 연관된 것은 아니다 . 라이브러리 참조 파일이 없어서 발생하는 링커 오류 ,

컴포넌트 파일이 없어 발생하는 sysgen 오류 , 디스크 용량의 부족으로 생기는

복사 오류 , 런타임 이미지의 구성에서 잘못된 설정으로 인한 런타임 이미지 오류

등으로 인하여 빌드 프로세스가 오류를 발생 할 수 있다 .

Sysgen 단계중 오류 Sysgen 오류는 일반적으로 파일이 없는 경우의 결과이다 . Build.log 파일은 이

오류에 대한 자세한 정보를 제공 할 수 있다 . 만일 이러한 유형의 오류는 필요한

종속적인 것들이 존재하지 않을 때 운영체제 설계에서 컴포넌트를 추가하거나 삭

제 할 때 발생 할 수 있다 . Sysgen 오류를 진단 하기 위해서는 , 카탈로그 항목

과 종속의 변경된 것을 검토하여 보는 것이 바람직 하다 . 어떤 컴포넌트는 일반

Sysgen 빌드 주기를 설정하는 대신 새로운 Sysgen 에서 실행을 필요로 한다는

것을 알아야 한다 . 일반적으로 , Clean Sysgen 은 명령을 사용하지 않는다 . 왜

냐하면 다른 빌드 구성에서 디버그나 릴리즈 빌드 구성에서 Clean Sysgen 을 실

행하기 위해서는 일반 Sysgen 를 다른 빌드 구성에서처럼 실행 할 필요가 있기

때문이다 . 그러나 , 카탈로그 항목을 추가하거나 삭제 할 때와 Sysgen 빌드 오

류에 직면 하였을 때 일반 Sysgen 인 경우 , 이러한 문제를 해결하기 위해서는

Sysgen 을 재실행 할 필요가 있다 .

Page 34: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

66 제 2장 런타임 이미지 빌드와 배포

빌드 단계중 오류빌드 오류는 일반적으로 링커 오류 또는 컴파일러 오류에 의하여 발생한다 . 컴

파일러 오류들은 구문 (syntax) 오류 , 함수 호출에 부적합 하거나 없는 매개변수

인 경우 , 유사하게 컴파일러가 0 으로 나누어 유효한 바이너리 코드로부터 생성

하지 못하게 하는 경우이다 . 컴파일 오류를 더블 클릭함으로서 심각한 코드의 줄

로 이동 할 수 있다 . 기억하여야 할 것은 컴파일러 오류는 다른 컴파일러 오류를

초래 할 수 있다 . 예를 들면 , 만일 변수가 여러 곳에 쓰이는 경우 , 틀린 변수의

정의는 여러 곳에서 컴파일러 오류를 유발 할 수 있다 . 일반적으로 , 첫 오류 목

록에서부터 시작하여 코드를 고쳐나가며 재 컴파일하는 것이 좋은 방법이라 할

수 있겠다 . 때로는 작은 코드의 변경이 목록에서 여러 개의 오류들을 한꺼번에

제거 할 수도 있다 .

링커 오류는 컴파일러 오류보다 찾기가 어렵다 . 일반적으로 , 라이브러리가 비 호

환 이거나 아예 없는 경우의 결과가 대부분이다 . 만일 링커가 내보낸 DLL 함수

의 외부 참조를 해결하지 못 할 경우 , 틀린 API 구현은 링커 오류를 초래 할 수

있다 . 다른 일반 이유 중 하나는 루트에 환경 변수를 틀리게 초기화하는 것이다 .

빌드 파일은 특별히 source 파일 등은 참조 라이브러리를 지적하기 위하여 하드

- 코드 (hard-code) 디렉토리 이름을 사용하는 대신 , 환경 변수를 사용한다 . 만

일 , 이 환경 변수들이 설정이 안된 경우 , 링커는 라이브러리를 찾을 수가 없다 .

예를 들면 , %_WINCEROOT% 는 C:₩Wince600 를 지적하여야 하며 , 만일 기

본 구성과 %_FLATRELEASEDIR% 에서 Windows Embedded CE 를 설치할 경

우 현재의 릴리즈 디렉토리를 가리킨다 . 환경 변수 값을 확인 하기 위해서는 ,

Visual Studio 에서 빌드 메뉴를 열고 , 빌드 창에서 Open Release Directory 를

선택한 다음 명령 프롬프트에서 set _winceroot 같은 set 명령을 환경 변수와

같이 또는 없이 사용한다 . 매개변수 없이 set 명령을 실행하면 모든 환경 변수가

표시되는데 , 이 목록은 매우 긴 것임으로 유의 하여야 한다 .

릴리즈 복사 단계 중 오류

릴리즈 복사 (Release Copy ) 단계 중 Buildrel 오류 발생은 일반적으로 하드 드

라이버의 공간이 부족 할 때 발생한다 . 릴리즈 복사 단계 중 , 빌드 시스템은 파

일을 릴리즈 디렉토리에 복사한다 . 하드 드라이버의 공간을 늘리거나 운영체제

설계 폴더를 다른 드라이버로 이동 시키는 것이 필요하다 . OS 프로젝트 폴더로

향하는 경로에는 자간이 있어야 하는데 , 왜냐하면 , 경로의 자간이나 또는 OS 설

계에서 이름의 자간은 빌드 프로세스 중 오류를 일으킬 수 있기 때문이다 .

런타임 이미지 단계 중 오류

빌드 프로세스의 최종 단계에서 발생하는 오류는 대개 파일이 존재하지 않는 경

우에 발생 한다 . 이 것은 이전 단계에서 컴포넌트가 빌드하지 못하는 경우 발생

Page 35: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

학습 3: 빌드 결과 분석 67

할 수 있는데 , 그럼에도 불구하고 빌드 프로세스는 계속해서 런타임 이미지 과정

을 진행하려고 한다 . .reg 또는 .bib 파일 에서 구문 오류는 빌드 시스템이

Reginit.ini 또는 Ce.bib 파일을 생성하지 못하는 경우 이 상황으로 몰고 갈 수 있

다 . Makeimg.exe 는 빌드 프로세스 중 이 파일을 생성하기 위하여 FMerge 도

구 (FMerge.exe) 를 호출하며 , 만일 이 것이 틀린 조건문과 같은 것으로 인하여

실패할 경우 make-image 오류를 경험하게 된다 . 다른 발생 가능한 오류로는

Error: Image Exceeds (X) 가 있는데 , 이미지는 Config.bib 에서 정의하는 최대

의 가능한 크기보다 초과 했다는 의미이다 .

학습 요약Windows Embedded CE 6.0 R2 를 위한 플랫폼 빌더는 Visual Studio 2005 의

빌드 - 로그인 (build-logging) 시스템을 통합하여 빌드 프로세스 중 상태 정보 ,

경고, 와 오류 메시지 등을 생성하는 것을 쉽게 액세스 하도록 제공하며Build.log,

Build.wrn, 와 Build.err 파일에서 오류를 추적할 수 있다 . Visual Studio 에서

어떻게 빌드 프로세스를 진행 하느냐에 따라서 이 파일들은 %_WINCEROOT%

폴더나 또는 하위 프로젝트 디렉토리에 상주하며 , 파일의 실제 위치는 그다지 중

요하지 않은데 , 그 이유는 , Visual Studio 의 오류 목록 창과 출력 창에서 이 파

일들을 분석 할 수 있기 때문이다 . 이 파일들을 메모장이나 다른 문자 편집기에

서 열 필요는 없다

로그 파일들을 분석함으로써 특정한 빌드 문제와 일반적인 빌드 프로세스를 더

잘 이해 할 수 있다 . 자주 경험하는 일반적인 빌드 문제로는 컴파일 에러 , 링커

에러, Sysgen 에러, 빌드 에러, 그리고 Release Copy와Make Run-time Image

단계 중 생성되는 다른 에러 가 있다 . 만일 , 빌드 에러 가 소스코드 파일의 줄과

직접 연관이 있으면 , “에러 목록 (Error List) 창” 에서 메시지 입력을 더블 -

클릭하면 Visual Studio 는 자동적으로 소스 코드 파일을 열고 심각한 문제의 줄

로 이동한다 . 다른 문제로는 , 하드 드라이버의 용량이 부족하여 buildrel 같이 발

생하는 에러는 Visual Studio IDE. 의 외부에서 문제 해결 단계가 필요하다 .

Page 36: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

68 제 2장 런타임 이미지 빌드와 배포

제 4 장 : 대상 플랫폼상에서 런 -타임 -이미지 배포빌드 문제를 모두 해결하고 런타임 이미지를 성공적으로 생성하기 위해서는 , 대

상 장치에서 Windows Embedded CE 를 배포 할 준비를 하여야 한다 . 이 작업

을 수행하기 위해서는 몆 가지 방법이 있는데 , 방법의 선택은 프로세스를 시작하

는 것을 선택함에 따라 대상 장치에서 Windows Embedded CE 를 사용하여 로

드 하는 것이다 . Windows Embedded CE 6.0 런타임 이미지를 시작하는 몇 가

지 방법이 있는데 , ROM 에서 직접 이미지를 시작 할 수 있다 . 이 경우에는 ROM

도구를 사용하여 대상 장치에서 런타임 이미지를 반드시 배포하여야 한다 . 부

트 로더 (boot loader ) 를 사용 할수 있는데 , 장치가 시작 할 때 런타임 이미지를

다운로드 하려고 하거나 또는 계속적으로 메모리를 재 사용하기 위하여 사용 할

수 있다 . Windows Embedded CE 6.0 R2 는 기본 부트 - 로더 (generic boot-

loader) 가 따라 오는데 , 이 코드로 필요 함에 따라 사용자에 맞도록 수정 할 수

있으며 , 이것은 제 3 자의 부트 로더을 구현하는 것이 쉽도록 되어 있다 . 본질적

으로 , Windows Embedded CE 는 거의 모든 시작 환경을 개발 주기 도중 최종

사용자에게 릴리즈 하기 위한 새로운 런타임 이미지를 쉽고 간편하게 공급 할 수

있다 .

이 과정을 마치면 사용자는 다음을 할 수 있다 :

■ 대상 장치상에서 런 - 타임 - 이미지를 배포하는 것을 결정 .

■ 올 바른 배포 레이어 선택을 위한 플랫폼 빌더 구성 .

예상 학습 시간 : 15 분 .

배포 방법 선택런타임 이미지를 배포하기 위해서는 , 대상 장치의 연결을 구축하여야 한다 . 이

것을 하려면 , 장치나 플랫폼 빌더로 어떻게 통신 할 것인지를 여러 개의 통신 매

개변수를 설정함으로써 정의 할 필요가 있다 .

Windows Embedded CE 의 핵심 연결 인프라 (Core Connectivity

infrastructure) 는 여러 개의 통신 할 수 있는 기능과 함께 하드웨어 플랫폼을 공

급 하여주는 여러 개의 다운로드 방법과 전송 장치를 지윈한다 . 대상 장치를 위

한 통신 매개 변수를 정의 하기 위해서는 Visual Studio 에서 대상 (Target) 메뉴

를 열고 , 대상장치 연결 옵션 대화 상자를 표시하는 연결 옵션 (Connectivity

Options) 을 선택한다 . 그림 2-7 에서 서술한 바와 같이 , 기본값으로 , 플랫폼 빌

더는 대상 장치 목록 상자에서 대상 장치 CE Device 를 제공하나 Add Device 링

크를 클릭 함으로서 독특한 이름을 가진 추가 장치를 생성 할 수도 있다 .

Page 37: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 4 장 : 대상 플랫폼상에서 런 - 타임 - 이미지 배포 69

그림 2-7 대상 장치 연결 옵션 창

다운로드 레이어 (Download Layer)

다운로드 레이어 목록 상자와 연관된 설정 버튼은 대상 장치에 런타임 이미지의

다운로딩을 위한 다운로드 서비스를 구성하는 데 사용된다 . 런타임 이미지를 배

포하기 위한 핵심 연결 인프라 (Core Connectivity infrastructure) 는 런타임 이

미지의 배포를 위한 다음과 같은 레이어를 지윈한다 .

■ Ethernet 이더넷 연결을 통하여 런타임 이미지를 다운로드 함 . 설정 버튼

을 사용하여 이더넷 다운로드 서비스를 구성 . 개발 워크 스테이션과 대상 장

치는 같은 subunet 에 있어야 하며 , 그렇지 않으면 대상 장치에 연결 할 수

없음 .

■ Serial RS232 연결을 통하여 런타임 이미지를 다운로드 함 . Setting 버튼

을 사용하여 포트 , baud rate 과 다른 직렬 통신 매개 변수를 설정 .

■ Device Emulator (DMA) 직접 메모리 액세스 (Direct Memory Access

(DMA)) 를 통하여 런 - 타임 이미지를 장치 에뮬레이터에 다운로드 함 . 설

정버튼을 사용하여 장치 에뮬레이터를 구성함 .

■ USB USB 연결을 사용하여 런-타임이미지를 다운로드 함. 구성을 위한 설

정은 없음 .

■ Image Update 장치의 flash 메모리에 이미지를 업데이트 함 . 구성을 위한

설정은 없음 .

Page 38: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

70 제 2장 런타임 이미지 빌드와 배포

■ None 다운로드를 윈치 않거나 런 - 타임 이미지를 업데이트하고 싶지 않은

경우 이옵션을 선택 함 .

전송 레이어 (Transport Layer)윈격 장치에 런타임 이미지를 전송 한 후 , 운영체제 설계에서 Kerne l

Independent Transport Layer (KITL) 을 사용가능으로 하였을 경우 , 장치에 연

결 할 수 있다 . 일반적으로 , 선택한 커널 전송 서비스는 다운로드 목록 상자에서

선택한 다운로드 서비스와 일치 하여야 한다 . 핵심 연결 인프라는 다음과 같은

전송 레이어 옵션을 지윈한다 .

■ Ethernet 이더넷 연결을 통하여 대상 장치와 통신 . 연결은 다운로드 서비

스와 같은 설정을 사용 .

■ Serial RS232 연결을 통하여 대상 장치와 통신 . 연결은 다운로드 서비스

와 같은 설정을 사용 .

■ Device Emulator (DMA) 직접 메모리 액세스 (Direct Memory Access

(DMA).) 를 통하여 장치 에뮬레이터와 통신 .

■ USB USB 연결로 장치 에뮬레이터와 통신 .

■ None 대상 장치와 통신 단절

디버거 옵션 (Debugger Options)만일 운영체제 설계에서 한 개 또는 그 이상의 디버거를 지윈하도록 하였을 경우 ,

디버거의 이름은 디버거 목록 상자에서 옵션으로 표시된다 . 기본값으로는 , 다음

과 같은 사용 가능한 디버거 옵션이 있다 :

■ Sample Device Emulator eXDI 2 Driver 는 Sample Extensible

Resource Identifier (XRI) Data Interchange (XDI) 드라이버는 Windows

Embedded CE 6.0 R2 에 포함되어있다 . XDI 는 표준 하드웨어 - 디버깅 인

터페이스이다 .

■ KdStub 이것은 커널 디버거이다. KdStub 는Kernel Debugger Stub의 약

자이다 . 플랫폼 빌더와 Visual Studio 에게 소프트웨어 디버거를 사용하라

고 지시한다 .

■ CE Dump File Reader 만일 운영체제 설계에 오류 리포트 생성기 카탈로

그 항목 (Error Report Generator catalog item) 을 추가하지 않으려면 , 사

후 디버거를 위하여 이 옵션을 사용 할 수 있다 .

■ None 디버거를 사용하기 윈치 않을 경우 이 옵션을 선택한다 .

Page 39: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

제 4 장 : 대상 플랫폼상에서 런 - 타임 - 이미지 배포 71

장치에 연결장치 연결을 구성하기 위해서는 , 핵심 연결 인프라를 사용하여 대상장치 또는 장

치 에뮬레이터에 런타임 이미지를 전송 할 준비가 된 경우 대상 메뉴에서 Attach

Device 명령을 사용하여 Visual Studio 2005 에서 이 것을 실행 할 수 있다 . 디

버깅을 위한 핵심 연결 인프라나 KITL 를 사용 할 계획이 없더라도 플랫폼 빌더

가 런타임 이미지를 다운로드 할 수 있도록 반드시 장치에 연결 하여야 한다 .

이미지 다운로드가 진행되면 , 먼저 시작 프로세스를 시작하고 , 만일 대상 장치

에서 사용 가능하게 되면 KITL 은 유효하게 되고 , 커널 디버그를 사용하여 시작

프로세스를 진행 할 수 있으며 , 운영체제 컴포넌트와 응용프로그램 프로세스를

디버깅 할 수 있다 . KITL 를 사용하여 , 대상 메뉴에서 플랫폼 빌더와 함께 Visual

Studio 에 있는 윈격도구를 사용할 수 있는데 , 파일 뷰어나 , 장치의 레지스트리

설정에 액세스 할 수 있는 레지스트리 편집기나 , 장치의 파일 시스템과 상호 작

용하는 리소스 사용과 응답 시간을 분석하는 실행 모니터나 , 실행되는 시스템에

서 자세한 정보를 볼 수 있는 커널 추적기나 다른 윈격 도구 등이 있다 . 시스템

디버깅에 관한 자세한 정보는 제 4 장 “디버깅과 시스템 검사” 에서 찾아 볼 수

있다 .

학습 요약Windows Embedded CE 는 이더넷 연결 , 직렬 연결 , DMA, USB 연결 등을 포

함하여 여러모로 필요하고 사용 가능한 하드웨어 플랫폼에 여러 장치의 연결을

위한 런타임 이미지를 위한 배포를 지윈한다 . 예를 들면 장치 에뮬레이터에서 CE

6.0 R2 를 배포하려면 , DMA 를 선택하는 것은 올바른 선택이다 . 플랫폼 빌더와

함께하는 Visual Studio 2005 에서 Attach Device 명령을 클릭하여 통신 매개변

수만 설정하면 Windows Embedded CE 를 배포하기 위한 준비는 완료이다 .

시험 팁

인증 시험을 합격하기 위해서는 , WINDOWS EMBEDDED CE 런 - 타임 이미지를 여러 방법으로 배포하는것을 알아야 한다 . 특별히 , 장치 에뮬레이터를 위한 런 - 타임 이미지를 배포 할 줄 알아야 한다 .

Page 40: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

72 제 2장 런타임 이미지 빌드와 배포

실습 2: 런 -타임 이미지 빌드와 배포이 실습에서 , Device Emulator BSP 와 운영체제 설계 기반에서 빌드와 배포를

실행하게 되며 , 여러 빌드 단계를 확인 하기 위하여 Visual Studio 출력 창에서

빌드 정보를 분석 할 것이며 , 런타임 이미지를 다운로드하기 위하여 대상 장치에

서 연결을 설정 할 것이다 . 대상 장치를 어떻게 커스터마이징 하는지를 보여 주

기 위해서는 장치 에뮬레이터의 설정을 수정하여 네트워크 통신을 가능케 하고

큰 스크린 해상도를 지윈하도록 한다 . 마지막 단계에서는 런타임 이미지를 다운

로드하고 커널 디버거로 대상 장치에 연결함으로써 Windows Embedded CE 시

작 프로세스의 세부 사항을 검토 할 수 있도록 한다 . Visual Studio 에서 기본 운

영체제 설계를 생성하기 위해서는 실습 1 에서 설명한 “생성 , 구성과 운영체제

설계 빌드” 의 진행 과정을 따라 한다 .

노트 세부 단계별 지침

이 실습에서 나타나는 진행과정을 성공적으로 마스터완성하기 위해서는 , 이 책의 부록인 “실습 2를 위한 단계별 지침” 문서를 참조한다

운영체제 설계를 위한 런 -타임 이미지 (Run-Time Image) 빌드하기 1. 실습 1을 끝마친 후에, 그림 2-8에서 서술 한 바와 같이 Visual Studio의 빌

드 메뉴 에 있는 Advanced Build Commands 하에 있는 Sysgen 를 선택한

다 . 다른 방법으로는 sysgen 단계와 함께 빌드 시작을 실행 할 수 있는 빌드

메뉴 하의 빌드 솔루션을 선택 할 수 있다 .

팁 Sysgen 작업

Sysgen 작업을 완료하는 데는 약 30 분 정도 시간이 필요하다 . 시간을 절약하기위해서는 , 운영체제 설계를 변경 할 때마다 시스템 (System) 을 실행 할 필요는 없다 . 그 대신 , 윈하는 모든 컴포넌트를 추가하거나 삭제 한 후 Sysgen 를 실행한다 .

2. 출력 창에서 빌드 프로세스를 추적한다 . SYSGEN, BUILD, BUILDREL, 와

MAKEIMG 단계를 식별하기 위한 빌드 정보를 검토한다 . Ctrl+F 를 눌러

찾기와 바꾸기 대화 상자를 표시하고 이 단계들을 식별하기 위한 다음과 같

은 문자들을 검색 한다 :

a. Starting Sysgen Phase For Project SYSGEN 단계 시작 .

b. Build Started With Parameters BUILD 단계 시작 .

c. C:₩WINCE600₩Build.log BUILDREL 단계 시작 .

d. BLDDEMO: Calling Makeimg?Please Wait MAKEIMG 단계 시작 .

Page 41: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

실습 2: 런 - 타임 이미지 빌드와 배포 73

3. Windows 탐색기에서 C:₩Wince600 폴더를 연다 . Build.* 파일이 존재하

는지를 확인 한다 .

4. 메모장 같은 문자 편집기에서 Build.* 파일을 열어 내용을 검토한다 .

그림 2-8 Windows Embedded CE 프로젝트 빌드하기

연결 옵션 구성1. Visual Studio 에서 , 대상 메뉴를 열고 , 대상 장치 연결 옵션 대화 상자를 나

타내기 위하여 연결 옵션을 선택한다 .

2. 장치 목록 상자에서 CE 장치 (CE Device) 가 선택되었는지를 확인한다 .

3. 다운로드 목록 상자에서 장치 에뮬레이터 (Device Emulator (DMA)) 를 선

택한다 .

4. 전송 목록 상자에서 장치 에뮬레이터 (Device Emulator (DMA)) 를 선택한

다 .

5. 그림 2-9에서 서술한 바와 같이 디버거 목록 상자에서KdStub 를 선택한다.

Page 42: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

74 제 2장 런타임 이미지 빌드와 배포

그림 2-9 대상 장치 연결 옵션 설정

에뮬레이터 구성 변경1. 다운로드 목록 상자 옆에 있는 설정 버튼을 누른다 .

2. 에뮬레이터의 속성 대화 상자에서 , 디스플레이 탭으로 전환한다 .

3. 스크린 넓이를 640 픽셀로 하고 높이를 480 픽셀로 변경한다 .

4. 네트워크 탭으로 전환한다 .

5. 그림 2-10 에서 서술한 바와 같이 유효화 할 수 있는 NE2000 PCMCIA 네

트워크 어댑터를 선택한 다음 , 확인란에 바인딩 한 후 , 목록 상자에서 연결

된 네트워크 카드 (Connected Network Card option) 를 선택한 후 클릭한

다 .

6. Apply 을 클릭하여 새 장치 구성을 적용한다 .

7. Close 를 클릭하여 대상 장치 연결 옵션 대화 상자를 닫는다 .

Page 43: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

실습 2: 런 - 타임 이미지 빌드와 배포 75

그림 2-10 장치 에뮬레이터 네트워크 옵션

장치 에뮬레이터 상에서 런타임 이미지 (Run-Time Image) 테스트하기

1. Visual Studio 에서 대상 메뉴를 열고 , 부착 ( 연결 ) 할 장치를 클릭한다 .

2. 대상 장치에 Visual Studio 로 런 - 타임 이미지를 다운로드 하였는지 확인한

다 . 다운로드를 종료하는 데는 몇 분이 소요 된다 .

3. Visual Studio 출력 창에서 시작 하는 도중의 디버그 메시지를 추적해본다 .

4. 그림 2-11 에서 서술 한 바와 같이 Windows Embedded CE 의 시작 진행이

완료 될 때 까지 기다린 다음 , 장치 에뮬레이터와 상호작용한 다음 , 운영체

제 설계의 기능을 점검한다 .

Page 44: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

76 제 2장 런타임 이미지 빌드와 배포

그림 2-11 Windows Embedded CE 장치 에뮬레이터

Page 45: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

이 장의 요약 77

이 장의 요약이 Windows Embedded CE 빌드 프로세스는 소스코드를 컴파일하고 런타임 이

미지 생성을 하기 위하여 여러 단계를 포함하고 , 빌드의 여러 사항에 의존하며 ,

런타임 이미지 파일을 구성한다 . 이 프로세스는 .exe 파일을 생성 , 정적 라이브

러리 , DLL 과 BSP 를 위한 바이너리 리소스 (.res) 파일과 하위프로젝트 , OS

설계에서 선택된 카탈로그 항목을 위한 Public 폴더로 부터 SYSGEN 변수에 기

반을 둔 소스 코드 복사와 여과를 위한 Sysgen 단계 한 개의 런타임 이미지 구

성 파일 세트 생성 , BSP 와 하위 프로젝트에서 파일을 복사하기 에 필요한 릴리

즈 디렉토리에서 런타임 이미지 빌드를 위한 릴리즈 복사 단계 , 마지막으로 , .bib,

.reg, .db, 와 .dat 파일을 지정하여 릴리즈 디렉토리의 내용에서 런타임 이미지

를 생성 하기 위한 Make Run-time Image 단계 등이다 .

만일 , 플랫폼 빌더가 생성하고 추적한 Build.log, Build.wrn, 와 Build.err 파일을

분석하면 , 빌드 프로세스를 검토 할 수 있다 . Build.log 파일은 각 빌드 단계에

서 주어진 각 빌드 명령의 자세한 정보를 내포하고 있다 . Build.wrn 와 Build.err

는 같은 정보를 내포하고 있는데 , 빌드프로세스 중 경고와 오류를 여과한다 . 이

파일들은 직접 메모장에서 열 필요는 없다 . Visual Studio 에서는 빌드 상태의 정

보와 오류 메시지를 사용하여 작업하는 것이 편리하다 . 출력 창과 오류 목록 창

은 편리한 액세스를 제공한다 .

빌드 오류는 여러 이유로 인하여 발생 할 수 있다 . 가장 일반적인 윈인은 컴파일

러와 링커 에러이다 . 예를 들면 , 올지 않게 설정된 빌드 환경에서 빌드 명령의 실

행은 소스파일에서 환경변수가 라이브러리 디렉토리를 지정할 때 사용 할 수 없

는 위치로 지적할 떄 링커 오류를 발생 하게 된다 . 다른 중요한 빌드 구성 파일로

는 Dirs 파일과 Makefile.def 가 있고 , 디렉토리 경로와 조건 구문에서 SYSGEN

변수와 환경 변수에 의존 할 수 있다 .

런타임 이미지를 성공적으로 빌드 하기 위해서는 대상 장치에서 Embedded CE

를 배포 하면 된다 . 이 것은 핵심 연결 인프라에서 장치 연결을 설정해야 한다 .

마지막 배포 단계는 단순히 Windows Embedded CE 6.0 R2 를 위한 플랫폼 빌

더와 함께하는 Visual Studio 의 대상 메뉴에서 장치 추가 명령을 클릭하면 된다 .

Windows Embedded CE 빌드 프로세스를 제어하는 다음과 같은 구성 파일을 잘

알아두는 것이 매우 중요하다 .

■ 바이너리 이미지 빌드 (.bib) 파일 메모리 배정을 구성하고 런타임 이미지

를 포함하여 파일을 정의한다 .

■ 레지스트리 (.reg) 파일 대상 장치에서 시스템 레지스트리를 시작 .

■ 데이터베이스 (.db) 파일 기본 object store 를 설정 .

Page 46: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

78 이 장의 요약

■ 파일 시스템 (.dat) 파일 기동 시 RAM 파일 시스템 배정을 시작 .

■ Dirs 파일 빌드 프로세스에서 어느 디렉토리로 포함 시킬 것인지를 정의 .

■ Sources 파일 컴파일러와 링커를 위한 프로세스 . 이 전의 디렉티브 , 명령 ,

매크로와 다른 프로세싱 지시를 정의 . Visual Studio 에서 플랫폼 빌더 IDE

와 함께 Makefile 파일 대신 사용 .

■ Makefile 파일 기본 Makefile.def 을 참조하고 편집은 하지 못함 .

주 용어이 주 용어의 의미를 아시나요 ? 이 책의 뒤에 있는 용어집을 보시고 답을 확인

하세요 .

■ Sysgen

■ Build Rel

■ Flat Release Directory

■ Connectivity options

■ KITL

실습추천 이 장에서 시험에 관한 요점을 성공적으로 소화하기 위해서 다음과 같은 작업을

하여보자 :

명령 줄로부터 빌드 프로세스 시작하기 Windows Embedded CE 빌드 프로세스의 이해를 넓이기 위해서는 다음과 같

은 단계를 실행하여 보자 .

1. Sysgen process 카탈로그 항목에서 환경 변수를 설정한 후 , sysgen ?q

를 실행 한다 .

2. Build process 명령 프롬프트 창을 연다 (Command Prompt), 현재의 BSP

폴더 (%_TARGETPLATROOT%) 를 변경하고 WINCEREL 환경 변수를

1(set WINCEREL=1) 로 설정하거나 하지 않고 build-c 를 실행한다 . 빌드

를 실행한 후와 하기전의 %_FLATRELEASEDIR% 폴더의 내용을 검토한

다 .

Page 47: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시

이 장의 요약 79

런타임 이미지 배포다른 다운로드 , 전송 , 플랫폼 빌더에서 대상장치를 위한 디버깅 등을 사용하여

장치 에뮬레이터에 Windows Embedded CE 런타임 이미지를 배포한다 .

수동으로 Public 카탈로그 컴포넌트 복사하기

제 1 장 “운영체제 설계 커스터마이징 하기” 에서 설명한 것처럼 , 소스파일을

BSP 에 복사함으로 %_WINCEROOT%₩Public 폴더로 부터 컴포넌트를 복사한

다 . 그런 다음 , sysgen_capture 을 실행하여 컴포넌트의 종속을 정의 할 수 있

는 소스파일을 생성한다 . BSP 의 일 부분으로 하기 위하여 컴포넌트를 빌드하기

위한 새 소스파일을 수정한다 . 이 고급화 개발 작업을 완료하기 위해 Microsoft

MSDN ® 웹사이트 http:/ /msdn2.microsoft .com/en-us/ l ibrary/aa924385.aspx. 에 있는 Microsoft Windows Embedded CE 를 위한 플랫폼에

있는 “Using the Sysgen Capture Tool” 섹션을 읽어보면 된다 .

Page 48: 준비 키트( Preparation Kit)download.microsoft.com/download/0/B/9/0B98A0AE-C7AF-4EE2-8CB… · 현재 BSP와 하위 프로젝 트 리빌드 이전의 빌드 동안 생성된 임시