책 소개
요약
USB 스펙을 개발자 관점에서 자세하게 설명한다. USB 버스를 제대로 이해하고 싶은 개발자와 하드웨어 엔지니어들이 실무에서 궁금해 하는 내용을 포함하고 있다. 특히 오랜 시간 개발자의 길을 걸어온 저자의 코멘트와 직관력이 포함돼 USB 버스를 이해하는 데 좋은 길잡이가 될 것이다.
이 책에서 다루는 내용
■ USB 버스의 통신 속도별 특징
■ USB 링크
■ USB 프로토콜
■ USB Type-C와 허브 전원관리
■ USB 디바이스 프레임워크
■ 윈도우 호스트/슬레이브 USB 시스템
■ 리눅스 호스트/슬레이브 USB 시스템
■ 임베디드 운영체제 슬레이브 USB 시스템
이 책의 대상 독자
■ USB 버스에 관심이 있는 프로그래머
■ USB 버스를 다루는 하드웨어 개발자
■ USB 버스를 공부하고 싶은 학생
■ USB 버스를 위한 디바이스 드라이버(펌웨어) 개발자
이 책의 구성
1장. ‘USB(Universal Serial Bus)’에서는 2장부터 8장까지 다룰 모든 내용을 압축해서 설명한다.
2장. ‘USB 2.0 vs USB 3.0’에서는 USB 2.0과 USB 3.0의 주요 특징을 설명한다.
3장. ‘USB 통신속도별 특징’에서는 Low Speed, Full Speed, High Speed, Super Speed의 차이를 각각 설명한다.
4장. ‘USB 링크’에서는 Super Speed에서 처음 소개되는 USB 링크와 관련된 프로토콜을 설명한다.
5장. ‘USB 프로토콜’은 USB 프로토콜에 대한 내용을 심화적으로 설명한다.
6장. ‘USB 전원관리’에서는 TYPE-C 전원관리를 포함해 USB 전원관리 프로토콜을 소개한다.
7장. ‘허브’에서는 USB 2.0, 3.0 허브의 구조와 역할을 설명한다.
8장. ‘USB 디바이스 프레임워크’에서는 USB 호스트측의 클래스(클라이언트) 드라이버와 USB 디바이스측의 펑션 드라이버를 개발하는 개발자가 알아야 하는 프레임워크를 설명한다.
9장. ‘MA USB’에서는 가상 USB 버스를 구현하는 기반으로 사용되는 대표적인 프로토콜인 MA USB를 설명한다. 이 장을 통해 2장부터 8장까지 공부한 내용을 어떻게 가상화할 것인지를 함께 논의해본다.
10장. ‘xHCI’에서는 USB 호스트측에서 요구하는 호스트 컨트롤러를 위한 xHCI 스펙을 살펴본다.
11장. ‘윈도 USB 시스템’에서는 윈도 운영체제가 어떻게 USB 버스를 지원하는지와 개발자가 어떻게 USB 호스트측의 클래스 드라이버와 디바이스측의 펑션 드라이버를 개발할 수 있는지를 배운다.
12장. ‘리눅스 USB 호스트 시스템’에서는 리눅스에서 지원하는 USB 호스트 클래스 드라이버 작성법을 배운다.
13장. ‘USB 디바이스 컨트롤러를 위한 프레임워크’에서는 USB 디바이스 컨트롤러를 위한 드라이버를 개발하는 방법론을 배운다. 리눅스 USB 가젯 프레임워크와 사이프레스 FX3 개발환경을 설명한다.
목차
목차
- 1부. USB 개념을 이해하자!
- 1장. USB 기본 개요
- 1.1 USB 통신과 트랜잭션
- 1.2 USB 릴리스 버전과 통신속도
- 1.3 파이프와 엔드포인트
- 1.4 USB 전체 개요
- 1.5 USB 트랜잭션의 우선순위
- 1.6 USB와 전원 관리
- 1.7 USB가 제공하는 대표적인 서비스들
- 1.8 USB 디바이스 프레임워크 소개
- 1.9 USB 허브
- 1.10 데이터 시그널링
- 1.11 USB 커넥터의 종류
- 2장. USB 2.0 vs USB 3.0
- 2.1 USB 2.0
- 2.2 USB 3.0(USB 3.1)
- 3장. USB 통신속도별 특징
- 3.1 로 스피드와 풀 스피드
- 3.2 하이스피드
- 3.3 슈퍼 스피드
- 4장. USB 링크
- 4.1 프레임 구성
- 4.2 링크 명령어의 동작
- 4.3 LTSSM
- 5장. USB 프로토콜
- 5.1 USB 2 프로토콜
- 5.2 USB 3 프로토콜
- 6장. USB 전원관리
- 6.1 버스 리쥼과 서스펜드
- 6.2 USB 2 전원 관리
- 6.3 USB 3 전원 관리
- 6.4 USB Type-C 와 전원공급
- 7장. 허브(HUB)
- 7.1 USB 2 HUB
- 7.2 USB 3 허브
- 8장. USB 디바이스 프레임워크
- 8.1 USB 2 디바이스 프레임워크
- 8.2 USB 3 디바이스 프레임워크
- 2부. USB 호스트 컨트롤러와 프로토콜
- 9장. MA USB(Media-Agnostic USB)
- 9.1 아키텍처
- 9.2 데이터흐름 모델
- 9.3 프로토콜
- 9.4 MA USB 디바이스 프레임워크
- 9.5 MA USB 호스트 구현
- 10장. xHCI(eXtensible Host Controller Interface)
- 10.1 아키텍처 개관
- 10.2 동작 모델
- 10.3 레지스터 인터페이스
- 10.4 Suspend와 Resume
- 10.5 인터럽터
- 10.6 루트 허브
- 3부. 윈도와 리눅스 USB 호스트 드라이버
- 11장. 윈도 USB 시스템
- 11.1 USB 드라이버 스택
- 11.2 USB 디바이스 스택
- 11.3 USB 디바이스를 위한 플러그 앤 플레이 ID
- 11.4 USB 엔드포인트와 파이프
- 11.5 USB 이중 역할(드라이버 스택 아키텍처)
- 11.6 USB Type-C 커넥터를 위한 드라이버 작성
- 11.7 USB 호스트 클래스 혹은 클라이언트 드라이버 작성
- 12장. 리눅스 USB 호스트 시스템
- 12.1 USB 커널 호스트 클라이언트 드라이버
- 12.2 USB 호스트 컨트롤러 드라이버
- 12.3 USB 사용자레벨 호스트 클라이언트 라이브러리(LibUSB)
- 4부. USB 디바이스 컨트롤러
- 13장. USB 디바이스 컨트롤러를 위한 프레임워크
- 13.1 일반적인 USB 디바이스 컨트롤러가 가지는 모듈
- 13.2 광범위한 표준화 모델을 제공하는 운영체제와 디바이스 컨트롤러 제조사의 예시
- 13.3 표준화 모델을 제공하는 디바이스 컨트롤러 제조사의 예시
도서 오류 신고
정오표
정오표
[p.43 : 그림 1-3]