Price : 24,500원
help@crz-tech.com ( 031-701-5057)
l 임베디드 모바일 Windows CE 시스템 프로그램 개발 실전 가이드
l 초보자도 쉽게 따라 할 수 있고 전문가의 수준까지 총 망라한 지도서
l Windows CE 어플리케이션부터 하드웨어까지 연결을 한번에 파악할 수 있는 지름길
1부.
Windows CE Introduction & 환경 구성
1. Introduction
1.1. 이
책의 목적
1.2. 참고
사이트
1.3. 망고24, 망고64 보드의 활용
2. Windows XP 환경 구축 - Platform Builder 설치
2.1. 환경
구축 개요
2.2. Windows XP 환경 구축 설치 순서
2.3. 제어판
자동 업데이트 중지
2.4. 환경
설정 이전에 갖추어져야 할 업데이트들
2.5. .NET Framework 3.0 설치
2.6. Visual Studio 2005
2.6.1. Visual Studio 2005 설치
2.6.2. MSDN 설치
2.7. Windows Embedded CE 6.0 Evaluation
Edition 설치
2.8. Visual Studio 2005 Service Pack 설치
2.8.1. Visual Studio 2005 Team Suite Service Pack 1
2.9. Visual Studio 2005 Extensions 설치
2.10. Windows Embedded CE 6.0 Platform Builder
Service Pack 1
2.11. Windows Embedded CE 6.0 R2 설치
2.12. Windows Embedded CE 6.0 R3 설치
2.13. Windows Embedded CE 6.0 Update 설치
2.14. 설치
내용 확인
3. Windows 7 환경 구축 - Platform Builder 설치
3.1. .NET Framework 확인
3.2. Visual Studio 2005
3.2.1. Visual Studio 2005 설치
3.2.2. MSDN 설치
3.3. Visual Studio 2005 SP1
3.4. Visual Studio 2005 SP1 for Vista
3.5. Windows Embedded CE 6.0 Evaluation
3.6. Windows 7 소프트웨어 업데이트 설치
3.7. Windows Embedded CE 6.0 SP1
3.8. Windows Embedded CE 6.0 R2
3.9. Windows Embedded CE 6.0 R3
3.10. Windows Embedded CE 6.0 update package 설치
3.10.1. 업데이트
스크립트 처리 문제점 해결
3.10.2. 기타
업데이트 수행
2부.
Windows CE 6.0 Porting
4. 망고 64 하드웨어 구성
4.1. 망고 64 하드웨어 사양
4.2. 망고 64 부품면 (베타/릴리즈 보드)
4.3. 망고 64 보드 LCD면 (베타/릴리즈 보드)
4.4. 망고 64 구성도
5. 망고 64 BSP
5.1. 망고 64 보드 BSP 설치
5.1.1. BSP 파일
다운로드
5.1.2. Samsung LCD vs. Foxlink LCD - BSP 파일 비교
5.1.3. WiFi Patch 적용
5.1.4. BSP 설치
작업
5.2. Visual Studio 2005 최초 수행
5.3. Visual Studio 2005에서 Project 만들기
5.4. Catalog Item 변경하기
5.4.1. 구성
관리자 - 빌드 구성
5.4.2. Catalog Items View
5.4.3. BSP 선택
5.4.4. Core OS (CEBASE) 선택
5.4.5. Device Drivers 선택
5.5. Project build 하기
5.5.1. 프로젝트
속성 선택
5.5.2. 프로젝트
빌드 하기
5.6. 빌드
에러 대처 방법
5.6.1. error SYSGEN0000
5.6.2. Temporary File 삭제 및 바이러스 검사 프로그램 종료
5.7. CE 6.0 Image (Mango BSP) 다운로드 및 실행
5.7.1. DNW 실행
및 설정
5.7.2. NOR Mode로
부팅하기
5.7.3. Boot Loader 다운로드
5.7.4. NAND Mode로
부팅하기
5.7.5. NAND Flash에 NK.bin 퓨징 하기
6. 최초
프로그램 Hello Mango - 망고 64
6.1. Mango 보드 SDK 만들기
6.1.1. SDK 생성
6.1.2. SDK 구성
설정
6.1.3. SDK Build
6.2. Mango 보드 SDK 설치하기
6.3. ActiveSync 설치 및 탐색기 사용
6.4. Remote Tool - 원격 이미지 캡처
6.5. Hello Mango
6.5.1. Visual C++를 이용한 Hello Mango
6.5.2. Visual Studio 2005에서 장치 연결
6.5.3. Hello Mango 디버깅 하기
7. 망고 24 하드웨어 구성
7.1. 망고 24 하드웨어 사양
7.2. 망고 24 LCD면
7.3. 망고 24 부품면
7.4. 망고 24 구성도
8. 망고 24 BSP
8.1. 망고 24 BSP 설치 전 유의 사항
8.2. 망고 24 보드 BSP 설치
8.2.1. 망고 24 BSP 파일 다운로드
8.2.2. BSP 설치
작업
8.3. Visual Studio 2005에서 Project 만들기
8.4. Catalog Item 변경하기
8.4.1. 구성
관리자 - 빌드 구성
8.4.2. BSP 선택
8.4.3. Core OS (CEBASE) 선택
8.4.4. Device Drivers 선택
8.5. Project build 하기
8.5.1. 프로젝트
속성 선택
8.5.2. 프로젝트
빌드하기
8.6. CE 6.0 Image (Mango BSP) 다운로드 및 실행
8.6.1. DNW 실행
및 설정
8.6.2. NOR Mode로
부팅하기
8.6.3. Boot Loader 다운로드
8.6.4. NAND Mode로
부팅하기
8.6.5. NAND Flash에 NK.bin 퓨징 하기
9. 최초
프로그램 Hello Mango - 망고 24
9.1. 망고 24 Hello Mango 진행 전 유의 사항
9.2. Mango 보드 SDK 만들기
9.2.1. SDK 생성
9.2.2. SDK Build
9.3. Mango 보드 SDK 설치하기
9.4. ActiveSync 설치 및 탐색기 사용
9.5. Remote Tool - 원격 이미지 캡처
9.6. Hello Mango
9.6.1. Visual C++를 이용한 Hello Mango
9.6.2. Visual Studio 2005에서 장치 연결
9.6.3. Hello Mango 디버깅 하기
10. Hello Mango 두 번째와 DrawText
10.1. Hello Mango 2 프로젝트 만들기
10.2. cpp 소스
코드 만들기
10.3. 프로젝트
빌드 및 실행
10.4. 소스
코드 분석
10.4.1. windows.h 헤더 파일
10.4.2. WinMain 함수 정의 & lpCmdLine
10.4.3. hInstance & hPrevInstance
10.4.4. nShowCmd
10.4.5. MessageBox 함수
10.5. Hello Mango 2 디버깅
10.6. DrawText 함수 이용 출력
10.6.1. 소스
추가 내용
10.6.2. DrawText 화면 출력 실행 결과
10.6.3. DrawText 출력 코드 분석 191
3부. Windows
CE 6.0 기초 학습
11. 망고
보드로 Windows CE를 다뤄보기
11.1. ActiveSync 연결
11.1.1. ActiveSync 연결 상태
11.1.2. 새
파트너 관계 창 띄우지 않기
11.2. Touch Screen Calibration (스타일러스 설정)
11.2.1. 제어판
스타일러스 실행
11.2.2. 스타일러스
두 번 누르기 설정
11.2.3. 스타일러스
보정 설정
11.3. 키보드, 마우스의 사용
11.3.1. Virtual 키보드 사용
11.3.2. USB 키보드/마우스 사용
12. MSDN 활용
도움말 참조하기
12.1. Visual Studio 2005 설명서 실행
12.2. MSDN 검색
12.3. 마이크로소프트
정보 사이트
13. Source Insight 프로젝트 파일 추가하기
13.1. WINCE600 부분 일부 폴더 삭제
13.2. Source Insight 프로젝트에 파일 추가
13.3. Undefined 항목 검색 및 새로운 파일 추가
13.4. Document type 추가 방법
14. EBoot만
다시 빌드하기
14.1. 일부만
빌드하기 위한 옵션
14.2. EBoot만
빌드하기
14.3. EBoot만
빌드하기에서 주의할 점
14.4. Build시에 Assembly 코드 뽑아내기
15. Visual Studio 2005 메뉴 설명
15.1. 도구
메뉴 옵션 설명
15.1.1. Multiprocessor Build 지원
15.1.2. 최대
병렬 프로젝트 빌드 수
15.2. CB6410-V01 구성 속성 중 Build Options
15.2.1. Buffer tracked events in RAM
15.2.2. Enable eboot space in memory
15.2.3. Enable event tracking during boot
15.2.4. Enable hardware-assisted debugging support
15.2.5. Enable kernel debugger
15.2.6. Enable KITL
15.2.7. Enable profiling
15.2.8. Enable ship build
15.2.9. Flush tracked events to release directory
15.2.10. Run-time image can be larger than 32 MB
15.2.11. Use xcopy instead of links to populate
release directory
15.2.12. Write run-time image to flash memory
15.3. CB6410-V01 구성 속성 중 Environment Options
15.4. Build 메뉴 설명
15.4.1. Targeted Build Settings
15.4.2. Global Build Settings
15.4.3. Advanced Build Commands
15.4.4. 빌드
솔루션 & OS design
16. NK.bin과 NK.nb0 파일 포맷 분석
16.1. Windows CE 바이너리 이미지 데이터 포맷 개요
16.2. NK.bin과 NK.nb0 분석
16.2.1. Sync 바이트
16.2.2. 런타임
이미지의 시작 주소와 크기
16.2.3. 데이터
레코드
16.2.4. 마지막
레코드
16.2.5. EBoot 메뉴 - “Format Boot Media for BinFS"
17. Visual Studio Remote Tools
17.1. 개요
17.2. 시작
폴더의 Remote Tool 실행하기
17.3. 시작
폴더에 없는 Remote Tool 실행하기
17.4. 모든
툴을 사용하기 위한 기본 설정 작업
17.4.1. 빌드
옵션 변경
17.4.2. Catalog Item 변경
17.5. 각
툴에 대한 설명
17.5.1. 원격
이미지 캡처(Remote Zoom-in)
17.5.2. 원격
파일 뷰어 (Remote File Viewer)
17.5.3. 원격
힙 워커 (Remote Heap Walker)
17.5.4. 원격
감시 (Remote Spy)
17.5.5. 원격
레지스트리 편집기 (Remote Registry Editor)
17.5.6. 원격
프로세스 뷰어 (Remote Process Viewer)
17.5.7. Remote Call Profiler
17.5.8. Remote Kernel Tracker
17.5.9. Remote Performance Monitor
17.5.10. Remote System information
17.6. Visual Studio 2005에서 Remote Tool 추가하기
18. 환경
변수 (Environment Variable)와 OS
Design 파일
18.1. _WINCEROOT
18.2. 환경
변수 확인
18.2.1. 시스템
환경 변수
18.2.2. BSP 환경 변수
18.2.3. IMG 환경 변수
18.2.4. Sysgen 변수
18.2.5. PRJ 환경 변수
18.2.6. 기타
환경 변수
18.3. OS Design Path와 파일
19. Config.bib 설정 변경 작업
19.1. Binary Image Builder 파일
19.1.1. OS Design 구성 파일
19.1.2. Binary Image Builder 구성
19.2. 현
상태 메모리 구성 파악
19.2.1. NAND, RAM 구성 (망고64)
19.2.2. config.bib 내용 (망고64)
19.2.3. image_cfg.h 내용 (망고64)
19.2.4. image_cfg.inc 내용 (망고64)
19.2.5. NAND 영역 위치 정보
19.2.6. 망고24 config.bib 내용 검토
19.3. 망고64 NK 크기 변경
19.3.1. 전체
변경 파일 및 변경 목표
19.3.2. config.bib 변경 내용
19.3.3. image_cfg.h 변경 내용
19.3.4. image_cfg.inc 변경 내용
19.3.5. 크기
변경 작업 후 주의사항
19.4. 망고24 FSRAMPERCENT 변경
19.5. 한글
폰트 제거 (망고24)
20. Nk.exe 부팅
프로세스
20.1. 전체
부팅 함수 호출 순서
20.2. KernelStart
20.3. kernel.dll과 NKStartup
20.4. NKStartup
20.4.1. Setting NKGLOBAL & OEMGLOBAL
20.4.2. OEMInitDebugSerial()
20.4.3. OEMWriteDebugString ((LPWSTR)NKSignon);
20.4.4. OEMInit()
21. UNICODE와
화면출력 함수들
21.1. UNICODE
21.1.1. TCHAR 정의
21.1.2. 스트링
표현
21.1.3. UNICODE 스트링 처리 함수
21.2. 화면
출력 Debug 함수들
21.2.4. OEM Debug 함수들
21.2.5.RETAILMSG, DEBUGMSG, ERRORMSG
4부.
Windows CE 6.0 Device Driver
22. Device Driver 기초
22.1. Windows CE 시스템 구조
22.2. 디바이스
드라이버 개요
22.2.1. Monolithic & Layered 디바이스 드라이버
22.2.2. Native & Stream interface 디바이스 드라이버
22.2.3. DDI (Device Driver Interface) 함수
22.3. 디바이스
드라이버 등록 함수
23. User Button 장치에 대한 이해
23.1. User Button 외관
23.2. User Button 회로도
23.3. S3C2443 & S3C6410 GPIO
24. Button Device Driver - 제작 및 등록
24.1. 드라이버
제작 개요
24.2. 디바이스
드라이버 폴더 생성 및 등록
24.3. 빌드
환경 파일 생성 - makefile
24.4. 빌드
환경 파일 생성 - Sources
24.5. 빌드
환경 파일 생성 - Module-Definition File
24.6. 레지스트리
등록 및 이미지에 포함하기
24.6.1. 시스템
레지스트리 등록
24.6.2. NK.bin 이미지에 포함시키기
24.7. 드라이버
소스 구현
24.7.1. DllEntry
24.7.2. BTK_Init 및 기타 함수들
24.8. 실행
결과
25. Interrupt 설정 및 처리 과정
25.1. 인터럽트
개요
25.2. ARM9, ARM11 Interrupt
25.3. Windows CE Interrupt
25.4. Interrupt 발생시의 처리과정
25.5. 인터럽트
초기화 작업
25.5.1. 부팅
후 최초 초기화 작업
25.5.2. 이벤트
생성 단계와 IRQ 등록 단계
25.5.3. Thread 생성 단계
25.6. Interrupt Service Thread (IST)
25.6.4. WaitForSingleObject
25.6.5. InterruptDone
25.6.6. OEMInterruptDone
26. Button Device Driver - Button 0 Interrupt 구현
26.1. S3Cxxxx_Button.c 구현
26.1.1. 주요
변수 내용
26.1.2. GPIO 레지스터 접근 구조체
26.1.3. BTK_Init 수정 - GPIO 포트 초기화
26.1.4. BTK_Init 수정 - 이벤트 생성 및 인터럽트
초기화
26.1.5. BTK_Init 수정 - Thread 생성
26.1.6. BTK_Init 수정 - GPIO 포트 초기화 완료
26.1.7. BTK_IST0 구현
26.2. 실행
결과
27. InterruptDone 과정과 Button Driver 완성
27.1. InterruptDone 과정
27.1.1. OEMInterruptDone 함수
27.1.2. 망고24 OALIntrDoneIrqs 함수
27.1.3. 망고64 OALIntrDoneIrqs 함수
27.2. Button 드라이버 완성
27.2.1. 망고64 수정 사항
27.2.2. 망고24 수정 사항
27.3. 망고24 부분 수정 과정
27.3.1. 버튼 2 처리 수정
27.3.2. 버튼 0 처리 수정
27.3.3. 버튼 3 처리 수정
28. Subproject로 MyLauncher 초기 작업
28.1. Command Shell 추가
28.1.1. Command Shell 개요
28.1.2. 카달로그
아이템 추가
28.1.3. 수행
결과
28.2. Subproject로 MyLauncher 만들기
28.3. MyLauncher를
바탕화면에 보이게 하기
28.3.1. MyLauncher.lnk 만들기
28.3.2. platform.bib 변경
28.3.3. platform.dat 변경
28.4. MyLauncher를
부팅 후 자동 실행
28.4.1. Dummy Shell의 개념
28.4.2. 레지스트리
수정
28.5. Task Bar 숨기기
29. MFC 이용 Launcher와 버튼 드라이버의 통신
29.1. MFC란?
29.2. MFC 이용 MyLauncher 만들기
29.2.1. MyLauncher 프로젝트 생성
29.2.2. 빌드
및 실행
29.3. Button Driver와 MyLauncher 간의 통신
29.3.1. 버튼
드라이버에서 메시지 송신
29.3.2. 출력할
내용 String 리소스 추가
29.3.3. Dialog 편집
29.3.4. Dialog Object Member 변수 추가
29.3.5. Dialog Data Exchange (DDX)
29.3.6. 메시지
처리부 추가
29.3.7. 실행
결과
30. 3축
센서 시험 및 SMB380 디바이스 분석
30.1. SMB380 & BMA150
30.2. 화면
돌리기 시험
30.2.1. 기존
시험 확인
30.2.2. 현재 BSP에서 확인하기
30.3. 디바이스
분석
30.3.1. 망고24 SMB380 부분 하드웨어 분석
30.3.2. 망고64 SMB380 부분 하드웨어 분석
30.3.3. SMB380 장치에 대한 이해
31. 3축
센서 (SMB380) 디바이스 드라이버 분석
31.1. 디바이스
드라이버 기본 시스템 파일 분석
31.1.1. Dirs 파일
31.1.2. makefile 파일
31.1.3. sources 파일
31.1.4. smbdriver.def 파일
31.2. 레지스트리
등록 및 이미지 포함 분석
31.2.1. 시스템
레지스트리 등록
31.2.2. NK.bin 이미지에 포함시키기
31.3. 디바이스
드라이버 자료 구조
31.3.1. Image 레지스터 자료 구조 (smb380regs_t)
31.3.2. 드라이버
메인 자료 구조 (smb380_t)
31.3.3. I2C & 3축 가속 데이터 자료 구조
31.4. SMB_Init() 분석
31.4.1. 자료
구조 초기화
31.4.2. I2C 초기화 - bus_init()
31.4.3. i2c_bus_write() & i2c_bus_read()
31.4.4. Critical Section 설정
31.4.5. Chip ID & Version 읽기
31.4.6. SMB 드라이버 초기화 완료 설정
31.5. SMB_Deinit()과 나머지 DDI 함수 분석
31.5.1. SMB_Deinit()
31.5.2. 나머지 DDI 함수
31.6. 드라이버
초기화 실행 확인
32. Rotate_GSensor 응용 프로그램 만들기
32.1. Rotate_GSensor 프로젝트 빌드 후 실행
32.1.1. Rotate_GSensor 응용 프로그램 다운로드
32.1.2. Rotate_GSensor 프로젝트 만들기
32.2. SMB_IOControl() 분석
32.2.1. SMB380UserDll.cpp IO Control 호출 함수들
32.2.2. IO Control 코드 값
32.2.3. IOCTL_SMB380_INIT
32.2.4. IOCTL_SMB380_SET_RANGE
32.2.5. IOCTL_SMB380_READ_ACCEL_XYZT
32.2.6. IOCTL_SMB380_READ_REG
32.3. Rotate_GSensor 응용 프로그램 분석
32.3.1. WinMain과 InitGSensor 분석
32.3.2. WndProc 분석
32.3.3. GoGSensor 분석
32.3.4. PictureRotate 분석
33. Camera 보드
연결과 장치에 대한 이해
33.1. Camera 보드 연결
33.1.1. 망고
보드 버전에 따른 연결
33.1.2. 카메라
모듈 연결
33.1.3. 카메라
모듈 전원 연결
33.2. 카메라
관련 회로 분석
33.2.1. 카메라
모듈 연결 부분
33.2.2. I2C 부분
33.2.3. Camera Interface 부분 - CAM_PWRDN
33.2.4. 기타 Camera Interface 부분
33.3. HSIS-LT1SF38M 카메라 모듈
33.3.1. 카메라
모듈 기본 정보
33.3.2. NOON130PC20 CMOS Image Sensor 개요
33.3.3. NOON130PC20 CMOS Image Sensor I2C 통신
33.4. YUV, YCbCr
33.5. CCIR-601 & 656
34. Camera 어플리케이션
빌드 및 Preview 실행
34.1. Camera 어플리케이션 빌드
34.1.1. 소스
코드 위치
34.1.2. TEST 폴더 생성 및 복사
34.1.3. 카메라
어플리케이션 수정
34.1.4. 환경
변수 파일 수정
34.1.5. 카메라
어플리케이션 빌드 결과 확인
34.2. Camera Preview 수행
34.3. BSP 수정
사항
34.3.1. CB6410.bat 변경
34.3.2. 카달로그
아이템 변경
35. Camera 디바이스
드라이버 초기화 과정 분석
35.1. 디바이스
드라이버 개요
35.2. 폴더
구조 분석
35.3. 초기화
코드 CAM_Init 분석
35.3.1. CAM_Init 호출 과정 개요
35.3.2. CAM_Init 소스 코드 분석
35.3.3. MDD CCameraDevice 클래스 초기화 코드 분석
35.3.4. PDD_Init 및 CCameraPdd 클래스 코드
분석
35.3.5. ReadMemoryModelFromRegistry 함수 분석
35.3.6. PDD 함수 연결 메모리 복사
35.3.7. 각종
글로벌 변수 설정 작업
35.3.8. CameraInit 함수 - 개요
35.3.9. CameraInit 함수 - ModuleInit()
35.3.10. CameraInit 함수 - CameraSetClockDiv()
35.3.11. CameraInit 함수 - InitializeBuffer()
35.3.12. CameraInit 함수 - InterruptInitialize()
35.4. 초기화
코드 PIN_Init 분석
36. Camera 디바이스
드라이버 Preview 과정 분석
36.1. Camera Preview 인터럽트 처리 분석
36.1.1. CameraPreviewThread 함수 분석
36.1.2. Preview 인터럽트 처리에 대한 전체 호출 개념도
36.1.3. CCameraPdd::FillBuffer 함수 분석
36.2. Camera Run 상태 변환과 Sensor 설정 분석
36.2.1. Camera Run 상태 변환 흐름도
36.2.2. SetSensorState() 분석
36.2.3. SetSensorFormat() 분석
36.2.4. CameraSetRegisters() 분석
36.2.5. CameraSetPreviewRegister() 분석
36.2.6. CameraSetScaler() 분석
36.2.7. CameraCaptureControl() 분석
맺음말
색인
내용