이미 소장하고 있다면 판매해 보세요.
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 특성 코드 기타 호스트 옵션 요구 사항 디바이스 포트 컨트롤러 칩 마이크로 컨트롤러 인터페이스 칩 |
『(개정 4판) USB 완전정복』은 유니버설 시리얼 버스(USB, Universal Serial Bus) 인터페이스를 사용한 디바이스 설계와 프로그래밍을 시작하는 개발자를 위한 책이다. 이 책은 하드웨어 개발자, USB 디바이스에 탑재되는 펌웨어 개발자, 디바이스와 통신하는 애플리케이션 개발자 모두에게 유용한 내용을 담았다.
USB는 여러 가지 디바이스 기능을 제공하는 다재다능한 인터페이스다. 친숙한 USB 주변기기로는 마우스, 키보드, 외장형 하드디스크, 프린터, 스피커, 카메라 등이 있다. 또한 USB는 데이터 수집 장치, 제어 시스템, 독특하게 설계한 특수 목적 디바이스에도 적합하다. 개발 제품이 오류 없이 동작하고 사용자에게 짜증을 안기지 않게 설계하려면 디바이스 하드웨어, 소프트웨어 드라이버, 개발 툴, 대상 기술을 올바르게 선택해야 한다. 이 책 『(개정 4판) USB 완전정복』이 모든 궁금증을 해소해줄 것이다.---저자 서문 중에서 오늘날 USB는 PC 환경뿐 아니라 디지털 카메라, 전용 프린터, 휴대용 MP3 플레이어, USB 메모리 등 우리가 일상에서 사용하는 가전제품에서도 흔히 볼 수 있는 데이터 이동 수단으로 자리매김했다. USB 메모리 한 개쯤 항상 휴대하고 다니는 사람을 주변에서 흔히 볼 수 있는 것은 이런 사실을 방증한다. 조만간 USB 3.0을 지원하는 PC와 USB 주변 장치도 대중화될 것이며, 기존 USB 메모리와 가격이 비슷한 USB 3.0 지원 메모리가 이미 시장에 출시되고 있는 상황이다. 한편 자동차 인포테인먼트 시스템에서의 USB 사용은 앞으로 괄목할 만한 성장을 이룰 것이다. 작년부터 본격적으로 시작된 아이폰, 안드로이드폰 등 스마트폰의 열풍은 누구라도 인정하는 사실이다. 자동차에 장착된 AVN(Audio, Video, Navigation) 시스템에 이런 스마트폰을 연결해서 그 안에 저장된 각종 멀티미디어 파일과 정보를 AVN 시스템의 큰 LCD상에서 활용할 수 있게 하려는 시도는 자동차 업계와 휴대폰 업계의 중요한 현안이다. 즉, 스마트폰에 저장된 멀티미디어를 AVN 시스템상에서 재생하고, 심지어 애플리케이션까지 AVN 시스템상에서 실행할 수 있는 시대가 곧 현실화될 전망이다. 이와 같은 AVN 시스템과 스마트폰 사이의 데이터 통신 수단으로 가장 이상적인 매체가 바로 USB다. USB는 데이터 전송률이 높고 사용 중에 스마트폰을 충전할 수 있다는 큰 장점이 있기 때문이다. USB 디바이스를 동작하게 하려면 실제 물리적인 신호를 주고받는 USB 하드웨어는 물론이고 그 하드웨어를 통해 정해진 프로토콜로 데이터를 주고받는 소프트웨어가 필요하다. 문제는 이런 USB 소프트웨어를 작성하는 일이 쉽지만은 않다는 사실이다. 물론 PC에서는 윈도우나 리눅스 운영체제가 USB 호스트 역할을 하기 때문에 우리가 신경 쓸 일이 별로 없다. 하지만 임베디드 시스템이 호스트 역할을 해야 할 경우는 문제가 심각하다. 물론 임베디드 시스템에서 사용할 수 있는 상용 USB 소프트웨어나 임베디드 리눅스가 있다. 하지만 라이선스 비용, 메모리 크기 등 여러 가지 문제로 인해 구미에 딱 맞아 떨어지는 해결책을 찾기란 쉽지가 않다. 상용 소프트웨어 제품을 사용하건 직접 개발을 하건 USB에 대한 지식이 많으면 많을수록 더 효율적으로 목적하는 바를 달성할 수 있다. 이 책은 여러분이 USB 개발에 성공적으로 첫 발을 딛게 하는 데 많은 도움을 줄 것이다. 이 책의 저자 Jan Axelson은 USB뿐 아니라 시리얼 포트 통신, 병렬 포트 통신, TCP-IP 네트워킹 등 임베디드 시스템 분야에서 주로 데이터 통신에 아주 많은 경험이 있으며, 이들 주제를 다룬 몇 권의 책도 집필한 바 있다. 이 책 또한 저자의 폭넓은 경험을 토대로 처음 USB에 접근하려는 독자에게 아주 훌륭한 출발점을 제공한다. 저자는 이 책에서 USB-IF가 정의한 분야를 골고루 다룬다. 개발자의 입장에서 USB를 설명하고 어떻게 접근해야 할지를 알려주는 책은 세계적으로 이 책밖에 없다는 점을 강조하고 싶다. 이 책은 여러분이 USB 개발을 위해 기본적으로 무엇을 알아야 하는지, 어디부터 시작해야 하는지, 좀 더 심도 있는 관련 정보를 어디에서 찾을 수 있는지, USB 장치 쪽에서는 어떤 것에 중점을 둬야 하는지, PC에서는 어떻게 해야 하는지 등을 모두 알려준다. 모쪼록 이 책이 USB 개발자에게 많은 도움이 되기를 바란다. - 성원호 / 디오이즈 대표---감수의 글 중에서 USB는 역사상 가장 성공한 범용 인터페이스다. 첫 이니셜 U의 유니버설(Universal)이라는 단어에서 알 수 있듯이 USB는 그야말로 만능 인터페이스라고 할 수 있다. 최근 USB 관련 개발 업무는 예전에 비해 쉽다. 칩 제조사에서 거의 모든 것을 제공하기 때문이다. 따라서 『(개정 4판) USB 완전정복』 같은 상세한 개발 참고서는 필요 없다고 생각할 수도 있다. 그러나 모든 개발이 그렇듯 한 번에 잘 되는 일은 없다. 특히 장착/제거, 원인 불명의 인식 오류, 호스트 리부팅, 저전력 문제 등에 직면하면 디버깅이 어렵고 힘들다. USB는 고속인 데다가 스펙 자체가 복잡하기 때문이다. 때때로 계측기 업체나 칩 제조사의 직접적인 도움을 받을 수도 있지만 비용도 많이 들고 서드파티에게 의존한 개발만 할 수는 없는 법이다. 프로토콜 하나하나를 분석해야 할 때가 분명히 생긴다. USB 개발을 처음 해본 개발자는 개발 시작 단계 자체가 넘기 힘든 장애물이다. USB가 만능을 목표로 한 다양한 기능의 인터페이스인 만큼 종래에 사용하던 SPI, UART 등 단순 시리얼 인터페이스에 비해 USB는 상당히 복잡한 인터페이스이기 때문이다. 『(개정 4판) USB 완전정복』은 이런 어려움을 해소할 수 있는 기본서인 동시에 활용서다. 광범위한 USB 스펙 문서를 힘들게 읽는 수고를 덜 수 있을 뿐만 아니라 개발에 필요한 모든 것을 빠짐없이 담고 있다. 모든 것을 담았다는 말은 개별 칩에 대한 특성만 제외하면 USB를 개발할 때 이 책 한 권만 있으면 된다는 뜻이다. 또한 단순히 스펙에 대한 설명을 나열한 것을 넘어서 시장에서 구할 수 있는 칩을 소개하고 예제 코드를 제공하며, 개발 시 직면할 수 있는 문제에 대한 주의 사항도 잊지 않고 거론한다. 개정 4판에서는 특히 USB 3.0, 슈퍼스피드에 대한 내용을 추가했다. USB 3.0은 최대 5Gbps 속도로 통신할 수 있는 최신 인터페이스다. 2011년은 슈퍼스피드 제품의 확산기가 될 것이다. 이미 인텔 샌디브릿지 등 최신 마더보드가 USB 3.0을 지원하기 시작했으며, USB 3.0 외장 SSD, 외장 하드디스크 등 디바이스 제품도 속속 시장에 등장 중이다. 『(개정 4판) USB 완전정복』의 저자인 Jan Axelson(www.Lvr.com)은 저수준 프로그래밍에 대한 전문가다. 번역을 하면서 전문가가 실제 개발로 경험, 체득한 내용을 바탕으로 집필한 책이라는 생각이 확연히 들었다. 그만큼 USB, 임베디드 개발자에게 도움을 줄 수 있는 책임을 확신한다. 현업에서 통상적으로 사용하는 외래어, 기술 용어가 있지만 이 책에서는 가급적 한글화한 용어를 쓰려고 애썼다. 이 분야에 관한 한 관련 전문 서적도 미미하고 변변한 용어도 정립되지 않은 실정이라 단순하게 외국어를 그대로 표기하기보다는 뜻을 살리고 현업 기술 어휘를 반영한 한글 용어로 번역하려 노력했음을 일러둔다. 용어에는 필요한 경우 영문을 병기했으므로 이해하기에 별 무리가 없을 것이다. ---옮긴이의 말 중에서 |
● USB 제품 설계
● 닷넷을 통한 USB 디바이스 개발 ● OTG와 무선 기술 ● USB 3.0과 슈퍼스피드 ● 임베디드 시스템의 USB 활용 강력한 USB를 탑재한 제품 설계 최신 USB 3.0과 슈퍼스피드 기술의 철저 해부 USB는 가장 성공한 개인용 컴퓨터 인터페이스다. 1996년 처음 등장한 이래로 더욱 진보한 전원 관리 기능과 다양한 디바이스 클래스, 무선 통신과 임베디드 컴퓨팅 등 광범위한 기능으로 진화했으며, 속도 또한 점점 더 빨라졌다. 최신 칩과 개발 툴을 반영한 『(개정 4판) USB 완전정복』에서는 USB 디바이스와 디바이스 소프트웨어 개발자를 위한 모든 내용을 담았다. 이 책에서 다루는 내용 ■ 프로젝트에 적합한 디바이스 컨트롤러 칩을 선정하는 법 ■ 특수 기능을 수행하는 디바이스 개발 ■ 비주얼 베이직, 비주얼 C#을 통한 디바이스 개발 ■ USB 디바이스 클래스를 사용한 개발 기간 단축 ■ USB 디바이스에 접근하는 무선 인터페이스 사용 ■ 전원 관리를 통한 배터리 사용 시간 극대화 ■ 임베디드 시스템과 USB 디바이스 개정 4판에서 달라진 점 1996년 USB 1.0이 등장한 이후 USB의 핵심적인 내용은 많은 부분이 그대로 남아있지만 더 빠른 버스 속도, 전원 관리 개선, 다양한 디바이스 클래스, 무선 통신, 디바이스/호스트 겸용 디바이스 등 계속 발전했다. 요즘에는 개선된 칩과 개발 툴을 이용해 디바이스 개발과 디바이스 소프트웨어 개발도 쉽게 할 수 있다. 개정 4판은 많은 곳을 고치고 추가했다. 특히 USB 3.0과 슈퍼스피드에 대한 설명을 새롭게 추가했다. 또한 마이크로소프트 WinUSB 드라이버로 제조사 전용 기능을 수행하는 법도 수록했다. 주로 손을 본 주제로는 디바이스 컨트롤러 칩, 무선 USB 통신 기술, 절전 대응 프로토콜, USB 디바이스 클래스 등이다. 이 책은 비주얼 베이직과 비주얼 C#으로 쓴 애플리케이션 예제 코드를 둘 다 제공한다. 디바이스 펌웨어에서는 마이크로엔지니어링 랩스(microengineering Labs)의 PICBASIC PRO™와 마이크로칩 테크놀로지(Microchip Technology)의 MPLAB® C 컴파일러를 사용하는 법을 다룬다. |