책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 모바일/무선/임베디드 프로그래밍
· ISBN : 9788960772038
· 쪽수 : 626쪽
· 출판일 : 2011-05-31
책 소개
목차
『(개정 4판) USB 완전정복』
1장 USB 기초
___사용상 제약 사항
______사용자 이점
______개발자 측면의 이점
______USB의 한계
___USB와 이더넷
______USB와 IEEE-1394
___인터페이스의 진화
______USB 1.0
______USB 1.1
______USB 2.0
______USB 3.0
______USB OTG
______무선 USB
___버스 구성 요소
______토폴로지
______버스 속도에 관해
______용어
___역할
______호스트의 역할
______디바이스의 역할
______버스 속도와 데이터 처리 능력
___디바이스 개발
______구성 요소
______개발 도구
______프로젝트 개발 단계
___USB 3.0 FAQ
______기능
______호환성
______케이블
______전원
2장 USB 전송
___전송 기초
______기초
______통신의 목적
______버스상의 데이터 관리
___전송의 구성 요소
______엔드포인트: 데이터를 만들거나 쓰는 곳
______트랜잭션 형식
______파이프: 엔드포인트를 호스트에 연결
______전송 방식
______스트림 파이프, 메시지 파이프
______전송 개시
___USB 2.0 트랜잭션
______트랜잭션 페이즈
______패킷 순서
______타이밍 제약과 타이밍 보장
______분할 트랜잭션
___전송 성공에 대한 보증
______상태 코드와 제어 코드
______제어 전송 상태 보고
______에러 확인
___슈퍼스피드 트랜잭션
______패킷 형식
______데이터 전송
______링크 관리 패킷
3장 용도별 전송 방식
___제어 전송
______가용성
______구조
______데이터 크기
______속도
______에러 검출과 에러 처리
______디바이스의 책임
___벌크 전송
______가용성
______구조
______데이터 크기
______속도
______에러 검출과 에러 처리
______디바이스의 책임
___인터럽트 전송
______가용성
______구조
______데이터 크기
______속도
______에러 검출과 에러 처리
______디바이스의 책임
___등시성 전송
______가용성
______구조
______데이터 크기
______속도
______에러 검출과 에러 처리
______디바이스의 책임
___시간이 중요한 전송
______버스 대역폭
______디바이스 기능
______호스트 기능
______호스트 지연
4장 열거
___열거 프로세스
______열거 단계
______디바이스 제거
______성공적인 열거를 위한 팁
___디스크립터
______디스크립터 종류
______디바이스
______디바이스 한정자
______컨피규레이션
______다른 속도 컨피규레이션
______인터페이스 연관 디스크립터
______인터페이스 디스크립터
______엔드포인트
______슈퍼스피드 엔드포인트 짝
______문자열
______바이너리 오브젝트 스토어와 디바이스 기능
______기타 표준 디스크립터
______마이크로소프트 OS 디스크립터
______USB 2.0용 디스크립터로 업데이트
5장 제어 전송
___제어 전송의 요소
______SETUP 스테이지
______DATA 스테이지
______STATUS 스테이지
______에러 처리
______디바이스 펌웨어
___표준 요청
______Get Status
______Clear Feature
______Set Feature
______Set Address
______Get Descriptor
______Set Descriptor
______Get Configuration
______Set Configuration
______Get Interface
______Set Interface
______Synch Frame
______Set SEL
______Set Isochronous Delay
___기타 요청
______클래스 전용 요청
______제조사 전용 요청
6장 칩 선택
___USB 디바이스의 구성 요소
______USB 2.0 컨트롤러의 내부
______기타 디바이스 요소
___디바이스 개발 간소화
______디바이스 요구 사항
______칩 문서
______드라이버 선택
______디버깅 툴
___USB 마이크로 컨트롤러 211
___마이크로칩 PIC18F4550
______사이프레스 EZ-USB
______ARM
___외부 CPU와 인터페이스하는 컨트롤러
______ST-NXP 와이어리스 ISP1582
______PLX 테크놀로지 NET2272
______FTDI USB UART와 USB FIFO
7장 디바이스 클래스
___요소와 사용
______공인 스펙
______클래스 스펙 요소
___정의된 클래스
______오디오
______통신 디바이스
______컨텐츠 보안
______디바이스 펌웨어 업그레이드
______휴먼 인터페이스
______IrDA 브릿지
______대용량 저장장치
______개인 헬스케어
______프린터
______스마트카드
______정지 이미지 캡처
______실험 및 계측
______비디오
___비표준 기능 구현
______드라이버 선택
______범용 드라이버 선택
______RS-232로부터 변환
______패러럴 포트로부터 변환
______PC 사이 통신
8장 호스트와 통신
___디바이스 드라이버
______계층적 드라이버 모델
______사용자 모드와 커널 모드
___각 계층의 내부
______애플리케이션
______사용자 모드 클라이언트 드라이버
______커널 모드 클라이언트 드라이버
______버스와 호스트 컨트롤러 드라이버
___드라이버 작성
______커널 모드 드라이버
______사용자 모드 드라이버
______테스팅 도구
___GUID 사용
______디바이스 셋업 GUID
______디바이스 인터페이스 GUID
9장 디바이스와 드라이버 결합
___장치 관리자 사용
______디바이스 보기
______속성 페이지
___레지스트리 내부의 디바이스 정보
______하드웨어 키
______클래스 키
______드라이버 키
______서비스 키
___INF 파일
______구조와 문법
______디바이스 전용 값
___디바이스 식별 문자열 사용
______일치하는 것 검색
______INF 파일 제공
___툴과 진단 지원
______INF 파일 사용 팁
______사용자가 볼 수 있는 것
10장 디바이스 감지
___API 함수 호출 방법 개요
______매니지드 코드와 언매니지드 코드
______데이터 관리
___디바이스 검색
______디바이스 인터페이스 GUID 얻기
______디바이스 정보 세트 포인터 요청
______디바이스 인터페이스 식별
______디바이스 경로 이름으로 구조체 요청
______디바이스 경로 추출
______통신 종료
___핸들 얻기
______통신용 핸들 요청
______핸들 닫기
___디바이스 장착/제거 감지
______디바이스 알림
______디바이스 알림 등록
______디바이스 변경 메시지 캡처
______디바이스 변경 메시지 읽기
______메시지에서 디바이스 이름 얻기
______디바이스 알림 정지
11장 휴먼 인터페이스 장치: 제어와 인터럽트 전송
___HID란?
______하드웨어 요구 사항
______펌웨어 요구 사항
___디스크립터
______HID 인터페이스
______HID 클래스 디스크립터
______리포트 디스크립터
___HID 전용 요청
______Get Report
______Get Idle
______Get Protocol
______Set Report
______Set Idle
______Set Protocol
___데이터 전송
______펌웨어 작성
______도구
12장 휴먼 인터페이스 장치: 리포트
___리포트 구조
______HID 디스크립터 툴
______컨트롤 아이템과 데이터 아이템 값
______아이템 형식
___메인 아이템 형식
______입력, 출력, 특성 아이템
______컬렉션
___전역 아이템 형식
______리포트 식별
______데이터 사용에 관한 설명
______단위 변경
______원본 데이터 변환
______데이터 크기와 형식 설명
______전역 아이템 저장과 가져오기
___로컬 아이템 형식
______물리 디스크립터
______패딩
13장 휴먼 인터페이스 장치: 호스트 애플리케이션
___HID API 함수
______HID 정보 요청
______리포트 송수신
______리포트 데이터 제공과 사용
______HID 통신 관리
___디바이스 식별
______Vendor ID와 Product ID 읽기
______디바이스 기능 포인터 얻기
______디바이스 기능 얻기
______버튼, 값의 기능 얻기
___리포트 전송과 수신
______디바이스에 출력 리포트 전송
______디바이스에서 입력 리포트 읽기
______디바이스로 특성 리포트 전송
______디바이스로부터 특성 리포트 읽기
______통신 종료
14장 WinUSB
___기능과 제약 사항
______디바이스 요구 사항
______호스트 요구 사항
______디바이스 펌웨어
______WinUSB 드라이버 할당
___디바이스 접근
______WinUSB 핸들 얻기
______인터페이스 디스크립터 요청
______엔드포인트 식별
______파이프 규칙 설정
______벌크, 인터럽트 전송으로 데이터 쓰기
______벌크, 인터럽트 전송으로 데이터 읽기
______제조사 정의 제어 전송 사용
______통신 종료
15장 허브의 모든 것
___USB 2.0
______허브 중계기
______트랜잭션 변환기
______허브 컨트롤러
______속도
______활성 링크 유지
___USB 3.0
______버스 속도
______구성 요소
______관리 트래픽
___허브 클래스
______허브 디스크립터
______허브 클래스 요청
______포트 표시기
16장 전원 관리
___전원 옵션
______전압
______버스 전원 사용
______필요 전원
______호스트로 알림
______배터리 충전
___허브 전원
______전원 소스
______과전류 보호
______전원 스위칭
___전원 절약
______USB 2.0 연결 전원 관리
______서스펜드 상태
______슬립 상태
______슈퍼스피드 전원 관리
______윈도우에서의 전원 관리
17장 테스트와 디버깅
___툴
______하드웨어 프로토콜 분석기
______소프트웨어 프로토콜 분석기
______트래픽 발생기
___테스팅
______적합성 테스트
______윈도우 로고
18장 버스상의 패킷
___USB 2.0
______로우스피드, 풀스피드 버스 상태
______하이스피드 버스 상태
______데이터 인코딩
______동기 유지
______타이밍 정확도
______패킷 형식
______패킷 간 지연
______테스트 모드
___슈퍼스피드
______데이터 스크램블
______인코딩
______링크 계층
______리셋
19장 전기적/물리적 인터페이스
___USB 2.0 송수신기
______케이블 세그먼트
______로우/풀스피드 송수신기
______하이스피드 송수신기
______신호 전압
___USB 2.0 케이블
______접점
______커넥터
______분리 가능 케이블과 일체형 케이블
______케이블 길이
______버스 길이
______회로에 의한 USB 직접 연결
___USB 3.0
______송신기와 수신기
______케이블
___신호 품질 보장
______노이즈 소스
______평형 선로
______꼬임선
______차폐
______엣지 레이트
______분리된 인터페이스
___무선화
______무선 USB 인증
______사이프레스 WirelessUSB
______기타 옵션
20장 임베디드 시스템용 호스트
___USB OTG
______기능과 제한 사항
______OTG 커넥터
______A 디바이스와 B 디바이스
______OTG 디바이스의 요구 사항
______OTG 디스크립터
______HNP 특성 코드
___기타 호스트 옵션
______요구 사항
______디바이스 포트
___컨트롤러 칩
______마이크로 컨트롤러
______인터페이스 칩
『윈도우 USB 디바이스 드라이버』
1장 WDM 디바이스 드라이버 기초
___1.1 디바이스 드라이버 입문
______1.1.1 디바이스 드라이버의 정의
______1.1.2 추상화 인터페이스 제공
______1.1.3 디바이스 드라이버의 계층 구조
______1.1.4 디클래스 드라이버와 벤더 드라이버
___1.2 윈도우 디바이스 드라이버
______1.2.1 윈도우의 간략한 역사
______1.2.2 윈도우 비스타의 커널 구성(2가지 모드)
______1.2.3 윈도우 비스타가 지원하는 3가지 종류의 드라이버
___1.3 디바이스 드라이버 개발 입문
______1.3.1 디바이스 드라이버 실행
______1.3.2 디바이스 드라이버 개발 환경 구축
______1.3.3 WDK 폴더 구성
______1.3.4 WDK를 사용한 빌드 방법
______1.3.5 디버그 환경 구축
______1.3.6 디바이스 드라이버 프로그래밍 입문
______1.3.7 디바이스 드라이버 빌드
______1.3.8 INF 파일 작성
______1.3.9 드라이버 셋업
______1.3.10 INF 파일 구조
______1.3.11 레지스트리와 디바이스 드라이버 관련 설정
___1.4 WDM의 기본
______1.4.1 DriverEntry 함수
______1.4.2 펑션 드라이버에 등록해야 하는 함수
______1.4.3 이벤트부터 하위 드라이버와의 통신
______1.4.4 WDM의 핵이 되는 4가지 구조체
______1.4.5 메모리 할당과 해제
______1.4.6 MajorFunction 작성 방법
______1.4.7 스켈톤 드라이버 작성
___1.5 AddDevice 디바이스 초기화 처리
______1.5.1 AddDevice 함수에 작성해야 할 것
______1.5.2 AddDevice 함수 코드
______1.5.3 AddDevice 함수의 검증
___1.6 플러그앤플레이
______1.6.1 플러그앤플레이 개요
______1.6.2 플러그앤플레이 구현
______1.6.3 플러그앤플레이 검증
___1.7 전원 관리
______1.7.1 전원 관리를 구현하지 않을 경우
______1.7.2 전원 관리 처리의 개요
______1.7.3 전원 관리 처리 구현
______1.7.4 전원 관리 처리 검증
___1.8 애플리케이션에서 디바이스 제어
______1.8.1 애플리케이션에서 열기/닫기
______1.8.2 IRP_MJ_CREATE, IRP_MJ_CLOSE 처리
______1.8.3 애플리케이션에서 읽고 쓰기
______1.8.4 읽기/쓰기 검증
______1.8.5 디바이스 제어 코드 작성법
______1.8.6 디바이스 제어 코드 검증
___1.9 정리
2장 USB 저장 장치의 기초
___2.1 USB의 개요
______2.1.1 USB의 특징
______2.1.2 주소
______2.1.3 4가지 전송 방식과 엔드포인트
______2.1.4 하드웨어 개요
___2.2 USB 프로토콜 계층의 개요
______2.2.1 패킷
______2.2.2 트랜잭션
______2.2.3 각종 전송 데이터
___2.3 USB 디바이스의 구성과 디스크립터
______2.3.1 USB 디바이스의 구성
______2.3.2 리틀 엔디언
______2.3.3 디스크립터
______2.3.4 디바이스 디스크립터
______2.3.5 컨피규레이션 디스크립터
______2.3.6 인터페이스 디스크립터
______2.3.7 엔드포인트 디스크립터
______2.3.8 문자열 디스크립터
______2.3.9 디바이스 쿼리 디스크립터, 기타 속도 컨피규레이션 디스크립터
___2.4 리퀘스트
______2.4.1 GET_STATUS
______2.4.2 CLEAR_FEATURE
______2.4.3 SET_FEATURE
______2.4.4 SET_ADDRESS
______2.4.5 GET_DESCRIPTOR
______2.4.6 GET_CONFIGURATION
______2.4.7 SET_CONFIGURATION
______2.4.8 GET_INTERFACE
______2.4.9 SET_INTERFACE
______2.4.10 클래스 리퀘스트와 벤더 리퀘스트
___2.5 USB 디바이스로서의 동작
___2.6 대용량 저장 장치 클래스
______2.6.1 대용량 저장 장치 클래스의 개요
______2.6.2 CB/CBI 프로토콜
______2.6.3 벌크 전용 프로토콜
______2.6.4 디스크 접근
______2.6.5 SCSI 규격의 개요
___2.7 정리
3장 KMDF 디바이스 드라이버 개발
___3.1 KMDF 개요
______3.1.1 공통 부분의 라이브러리화
______3.1.2 KMDF의 기본 구성
______3.1.3 주요 구조체(오브젝트)
___3.2 KMDF 입문
______3.2.1 KMDF 기본 코드
______3.2.2 KMDF용 INF 파일 작성
______3.2.3 KMDF 드라이버 작성
______3.2.4 KMDF 드라이버 빌드와 실습
______3.2.5 플러그앤플레이와 전원 관리
___3.3 KMDF 드라이버의 기본 오브젝트
______3.3.1 WDF_OBJECT_ATTRIBUTES 구조체
______3.3.2 WDFQUEUE 오브젝트
______3.3.3 WDFREQUEST 오브젝트
______3.3.4 WDFFILEOBJECT 오브젝트
______3.3.5 WDFMEMORY 오브젝트
___3.4 KMDF 드라이버 개발의 기본
______3.4.1 애플리케이션에서 접근
______3.4.2 데이터 읽기/쓰기
______3.4.3 디바이스 제어
___3.5 윈도우의 USB 드라이버 개요
______3.5.1 USB 호스트 드라이버의 구조
______3.5.2 KMDF의 USB 기본 처리
___3.6 USB 디바이스의 초기화와 종료
______3.6.1 KMDF의 USB 초기화, 종료 처리
______3.6.2 컨피규레이션 디스크립터 얻기
______3.6.3 WDFUSBPIPE 오브젝트 얻기
______3.6.4 초기화와 종료 처리 코드
___3.7 USB 디바이스 제어
______3.7.1 디바이스 드라이버의 사양
______3.7.2 DeviceIoControl의 제어 코드 정의
______3.7.3 컨피규레이션 디스크립터 얻기
______3.7.4 컨피규레이션 디스크립터 확인
___3.8 클래스 리퀘스트 발행
______3.8.1 클래스 리퀘스트 발행 순서
______3.8.2 클래스 리퀘스트 발행 코드
___3.9 벌크 전송 처리
______3.9.1 벌크 전송 처리 구현 방법
______3.9.2 벌크 전송 구현
___3.10 SCSI 명령어 처리
______3.10.1 SCSI 명령어 발행
______3.10.2 INQUIRY 처리
______3.10.3 SCSI 명령어 발행 실습
___3.11 미디어 용량 측정
______3.11.1 READ_CAPACITY 처리
______3.11.2 파이프 리셋 처리
______3.11.3 REQUEST_SENSE 처리
___3.12 미디어 리더 프로그램
______3.12.1 MBR
______3.12.2 READ10 명령어로 읽기
______3.12.3 MBR 읽기 실습
___3.13 정리
4장 UMDF 디바이스 드라이버 개발
___4.1 UMDF 드라이버의 개요
______4.1.1 UMDF의 개념
______4.1.2 UMDF의 디바이스 제어 처리 흐름
______4.1.3 UMDF 드라이버 개발을 위한 준비
___4.2 DLL 개발과 설치
______4.2.1 UMDF를 설치하기 위한 INF 파일
______4.2.2 UMDF 드라이버가 DLL인 이유
______4.2.3 DLL 필수 구현 함수
______4.2.4 디버그를 위한 WPP
______4.2.5 UMDF 드라이버 스켈톤 코드
______4.2.6 UMDF 빌드 필수 파일
______4.2.7 DLL 설치
___4.3 UCOM의 기본 동작과 IDriverEntry 인터페이스
______4.3.1 COM 개론
______4.3.2 C++에서의 Interface 정의
______4.3.3 IUnknown 구현
______4.3.4 IClassFactory 구현
______4.3.5 MIDriverEntry부터 디바이스 클래스의 임시 구현
______4.3.6 COM 모듈의 동작 실습
___4.4 플러그앤플레이와 전원 관리
______4.4.1 UMDF 디바이스 드라이버의 기본 구조
______4.4.2 IPnpCallbackHardware 인터페이스
______4.4.3 IPnpCallback 인터페이스
______4.4.4 디바이스 클래스 구현
______4.4.5 디바이스 클래스 생성 코드
______4.4.6 플러그앤플레이와 전원 관리 실습
___4.5 UCOM 드라이버의 기본 제어
______4.5.1 프레임워크(I/O 관리자)의 리퀘스트에 응답
______4.5.2 애플리케이션의 접근부터 큐 클래스 구현
______4.5.3 디바이스 읽기/쓰기부터 IWDFMemory 인터페이스
______4.5.4 DeviceIoControl 함수로 제어
___4.6 디바이스의 제어 처리
______4.6.1 IWDFIoRequest와 IWDFIoTarget
______4.6.2 IWDFIoRequest::Send 함수로 디바이스 제어
______4.6.3 새 리퀘스트를 작성해 제어
___4.7 USB 디바이스 초기화
______4.7.1 UMDF의 USB 기본 처리
______4.7.2 UMDF 디바이스 드라이버의 USB 초기화
______4.7.3 초기화 처리를 위한 준비
______4.7.4 IWDFUsbTargetDevice 얻기
______4.7.5 IWDFUsbInterface 얻기
______4.7.6 IWDFUsbTargetPipe 얻기
______4.7.7 SetPipePolicy로 통신 설정
______4.7.8 USB 디바이스의 초기화와 종료 처리
______4.7.9 USB 디바이스의 초기화와 종료 처리 구현
___4.8 디바이스 드라이버의 사양
___4.9 컨피규레이션 디스크립터 얻기
______4.9.1 컨피규레이션 디스크립터를 얻는 코드
______4.9.2 OnDeviceIoControl 함수 수정
______4.9.3 컨피규레이션 디스크립터 확인
___4.10 클래스 리퀘스트 발행 처리
______4.10.1 제어 전송 처리 구현
______4.10.2 클래스 리퀘스트 발행 처리 구현
______4.10.3 OnDeviceIoControl 함수 수정
___4.11 벌크 전송 처리
______4.11.1 IRequestCallbackRequestCompletion 인터페이스 상속
______4.11.2 ForwardFormattedRequest와 OnCompletion 함수의 구현
______4.11.3 OnRead와 OnWrite 함수의 구현
______4.11.4 드라이버 빌드와 검증용 윈도우 PC에 복사
___4.12 SCSI 명령어 처리
______4.12.1 INQUIRY 명령어 확인
______4.12.2 READ_CAPACITY 명령어 확인
___4.13 미디어 리더 프로그램
___4.14 정리
부록
A 릴리즈 버전 드라이버 작성
B 64비트 PC에서 동작
___B.1 INF 파일
___B.2 64비트 환경에서 실행하는 방법
C 서명(KMCS)
D GUID 생성
E Driver Install Frameworks API 이용
F 참고 문헌