이미 소장하고 있다면 판매해 보세요.
|
1장 USB의 기초
USB가 할 수 있는 것 사용자 측면의 이점 개발자 측면의 이점 USB는 만능? 인터페이스의 진화 오리지널 USB USB 2.0 USB On-The-Go 무선 USB USB 대 IEEE-1394 USB 대 이더넷 Bus 구성요소 토폴로지 용어 정의 작업 분할 호스트의 역할 주변기기의 역할 속도에 관해 디바이스 개발 구성요소 개발 도구 프로젝트 개발 단계 2장 USB 전송 세부사항 전송의 기초 이뉴머레이션 통신 애플리케이션 통신 버스 상의 데이터 관리 호스트 스피드와 버스 속도 전송의 구성요소 디바이스 엔드포인트: 데이터를 만들거나 소비하는 곳 파이프: 엔드포인트를 호스트에 연결 전송방식 스트림 파이프와 메시지 파이프 전송 개시 트랜잭션: 전송의 구성요소 트랜잭션 페이즈 전송이 성공했는지 보증 핸드쉐이킹 제어전송 상태 보고 에러확인 3장 다양한 용도를 위한 전송 타입 제어 전송 가용성 구조 데이터 크기 속도 에러감지와 에러처리 벌크 전송 이용가능성 구조 데이터 크기 속도 에러검출과 에러처리 인터럽트 전송 이용가능성 구조 데이터 크기 속도 에러검출과 에러처리 등시성 전송 이용가능성 구조 데이터 크기 속도 에러검출과 에러처리 시간이 중요한 전송(time-critical transfers)에 관한 자세한 내용 버스대여폭 디바이스 기능 호스트 기능 호스트 지연 4장 이뉴머레이션: 호스트가 디바이스 정보를 가져오는 방법 프로세스 이뉴머레이션 단계 허브를 이뉴머레이션 하기 디바이스 제거 성공적인 이뉴머레이션을 위한 팁 디스크립터 디스크립터 타입 디바이스 디스크립터 디바이스 한정자 디스크립터 컨피규레이션 디스크립터 다른 스피드 컨피규레이션 디스크립터 인터페이스 연관 디스크립터 인터페이스 디스크립터 엔드포인트 디스크립터 문자열 디스크립터 다른 표준 디스크립터 마이크로소프트 OS 디스크립터 2.0 준수 디바이스의 디스크립터 1.x디스크립터가 2.0을 준수하게 만들기 듀얼스피드 디바이스의 속도 알아내기 5장 제어전송: 중요 데이터를 위한 구조화된 리퀘스트 제어전송의 요소 셋업 스테이지 데이터 스테이지 상태스테이지 에러 처리 디바이스 펌웨어 리퀘스트 Get_Status Clear_Feature Set_Feature Set_Address Get_Descriptor Set_Descriptor Get_Configuration Set_Configuration Get_Interface Set_Interface Synch_Frame 다른 제어리퀘스트 클래스 한정 리퀘스트 제조사 한정 리퀘스트 6장 칩 선택 USB 디바이스 요소 USB 컨트롤러 다른 디바이스 요소 디바이스 개발 쉽게 하기 디바이스 요구사항 칩 문서 드라이버 선택 디버깅 툴 임베디드 CPU가 있는 컨트롤러 Microchip PIC18F4550 Cypress EZ-USB Cypress enCoRe II Freescale MC68HC908JB16 Freescale MCF5482 ColdFire 외부 CPU와 인터페이스하는 컨트롤러 National Semiconductor USBN9603 Philips Semiconductors ISP1181B Philips Semiconductors ISP1581 PLX Technology NET2272 FTDI Chip FT232BM과 FT245BM 7장 디바이스 클래스 클래스란 디바이스 워킹그룹 클래스 스펙 요소 정의된 클래스 오디오 칩/스마트카드 인터페이스 통신디바이스: 모뎀과 네트워크 컨텐츠 보안 디바이스 펌웨어 업그레이드 휴먼 인터페이스 IrDA 브릿지 대용량 저장장치 프린터 정지이미지 캡쳐: 카메라와 스캐너 시험과 측정 비디오 비표준 기능 구현 표준 또는 맞춤 드라이버? RS-232로부터 변환 패러렐포트로부터 변환 PC-to-PC 통신 포괄적 드라이버 사용 8장 호스트가 통신하는 방법 디바이스 드라이버의 기초 애플리케이션을 세부사항에서 분리하기 애플리케이션을 세부사항에서 분리하기 애플리케이션을 세부사항에서 분리하기 WDM 드라이버 계층적 드라이버 통신 흐름 추가 예제 맞춤 드라이버 제작 처음부터 드라이버 작성 드라이버 툴킷 사용 GUID 사용 디바이스 셋업 GUID 디바이스 인터페이스 GUID 9장 디바이스에 맞는 드라이버 찾기 장치관리자 사용 디바이스 보기 속성 페이지 레지스트리의 디바이스 정보 하드웨어 키 클래스 키 드라이버 키 서비스 키 INF 파일 내부 문법 섹션 디바이스 식별 문자열 사용 일치하는 것 찾기 INF파일을 제공할 필요가 있는가? 툴과 진단 도구 INF파일 사용 팁 사용자가 보는 것 10장 디바이스 발견 API함수 호출에 관한 간략한 가이드 관리된 코드와 관리되지 않은 코드 문서 비주얼C++ .NET 사용 비주얼베이직 .NET 사용 디바이스 찾기 디바이스 인터페이스 GUID 얻기 디바이스 정보 셋에 대한 포인터 요구 디바이스 인터페이스 확인 디바이스 패스명을 가진 구조체 요청 디바이스 패스명 추출 통신 끝내기 핸들 얻기 통신 핸들 요구하기 핸들 닫기 연결과 제거 감지 디바이스 통보에 관해서 디바이스 통보 등록 디바이스 변경 메시지 잡기 디바이스 변경 메시지 읽기 메시지에서 디바이스 패스명 가져오기 디바이스 통보 멈추기 11장 휴먼 인터페이스 디바이스: 제어와 인터럽트전송 사용 HID란? 하드웨어 요구사항 펌웨어 요구사항 HID로 디바이스 식별하기 HID 인터페이스 HID 클래스 디스크립터 리포트 디스크립터 HID한정 리퀘스트 Get_Report Get_Idle Get_Protocol Set_Report Set_Idle Set_Protocol 데이터 전송 예제코드에 관해 인터럽트 전송으로 리포트 보내기 인터럽트 전송으로 리포트 받기 제어전송을 사용해 리포트 보내기 제어전송으로 리포트 받기 12장 휴먼 인터페이스 디바이스: 리포트 리포트 구조 HID 디스크립터 툴 사용 컨트롤과 데이터 아이템 값 아이템 타입 메인 아이템 타입 입력, 출력, 특성 아이템 컬렉션과 컬렉션 끝 아이템 전역아이템 타입 리포트 식별 데이터 사용에 관한 설명 단위 변경 원본 데이터 변환 데이터 크기와 포맷 설명 전역아이템 저장과 가져오기 로컬아이템 타입 물리적 디스크립터 패딩 13장 휴먼 인터페이스 디바이스: 호스트 애플리케이션 HID API 함수 HID에 관한 정보 요구 리포트 보내고 받기 리포트 데이터 제공과 사용 HID통신 관리 디바이스 식별 제조사 ID와 제품 ID 읽어오기 디바이스 기능이 있는 버퍼 포인터 가져오기 디바이스 기능 가져오기 버튼과 값 기능 가져오기 리포트 보내고 받기 디바이스로 출력리포트 보내기 디바이스에서 입력리포트 읽기 디바이스로 특성리포트 보내기 디바이스에서 특성리포트 읽기 통신 닫기 14장 벌크전송 두 가지 프로젝트 비동기 시리얼 인터페이스 패러렐 인터페이스 호스트 프로그래밍 D2XX다이렉트 드라이버 사용 드라이버 선택 성능향상을 위한 팁 스피드에 대한 고려사항 지연 최소화 데이터 손실 방지하기 EEPROM 프로그래밍 EEPROM 데이터 데이터 수정 15장 허브: 디바이스와 호스트 사이의 연결 허브의 기초 허브 리피터 트랜잭션 번역기 허브 컨트롤러 스피드 아이들 버스 유지 허브를 직렬로 몇 개까지 연결할 수 있는가? 허브 클래스 허브 디스크립터 허브클래스 리퀘스트 포트 지시자 16장 전원 관리 전원 옵션 전압 어떤 주변기기가 버스전원을 사용할 수 있는가? 필요한 전원 호스트에 알려주기 허브 전원 전원 소스 과전류 보호 전원 스위칭 전원 절약 전체와 선택적 서스펜드 서스펜드 디바이스의 전류제한 통신 재개 윈도우에서 전원 관리 17장 테스트와 디버깅 툴 하드웨어 프로토콜 애널라이저 소프트웨어 프로토콜 애널라이저 트래픽 발생기 테스트 적합성 테스트 WHQL 테스트 18장 시그널과 인코딩 버스 상태 로우스피드와 풀스피드 버스 상태 하이스피드 버스 상태 데이터 인코딩 동기 유지 타이밍 정확도 패킷 포맷 필드 패킷간 지연 테스트 모드 테스트 모드 진입과 빠져나오기 모드 19장 전기적 인터페이스 송수신기와 시그널 케이블 세그먼트 로우/풀스피드 송수신기 하이스피드 송수신기 시그널 전압 로우스피드와 풀스피드 하이스피드 케이블 접점 커넥터 분리 가능 케이블과 캡티브 케이블 케이블 길이 시그널 품질 보장 노이즈 소스 평형 선로 트위스티드 페어 차폐 에지 레이트 분리된 인터페이스 무선 링크 Cypress 무선 USB 무선 USB 이니셔티브 기타 옵션 20장 USB OTG를 이용한 이중 역할 디바이스 디바이스와 호스트가 하나로 기능과 한계 OTG 디바이스 요구사항 OTG 디스크립터 HNP를 위한 기능코드 OTG 컨트롤러 칩 Philips ISP1362 TransDimension TD242LP Cypress CY7C67200 EZ-OTG Philips ISP1261 브릿지 컨트롤러 |
|
USB는 기존 레거시 포트(시리얼, 패러렐, PS/2)의 느린 속도와 제한된 장치 연결에 따른 불편을 해결하기 위한 인터페이스로 만들어 졌습니다. 일부 신형 PC는 레거시 포트를 아예 제거하고 USB만 탑재해 나오기도 하고 매우 다양한 주변기기가 USB를 사용할 정도로 광범위하게 사용되고 있습니다.
하지만 실제 USB를 자신의 제품에 넣기를 원하는 경우 실제 도움이 되는 자료를 구하기는 쉽지가 않습니다. 이 책 『USB 완전정복』은 『USB Complete』이라는 원서명에서도 볼 수 있듯이, USB 스펙을 제외하고 구할 수 있는 자료 중에 가장 광범위한 주제를 다루면서도 실제에서 쉽게 적용할 수 있게 쓰여진 책입니다. 『USB Complete』은 1999년 초판을 찍어낸 이후, 2001년 개정2판, 2005년 개정 3판을 펴내는 등 USB에 관한 한 전세계에서도 유례를 볼 수 없는 독보적인 책이며 이는 여러 전문가들이 격찬을 하는 이유이기도 합니다. - 전준걸 USB와 관련해 자타 공인 세계 최고의 책이라 일컬을 만한 이 책의 원서 『USB Complete 3rd edition』 표지에는 'Everything You Need to Develop Custom USB Peripherals(맞춤 USB 주변장치를 개발하기 위해 여러분이 알아야 할 모든 것)'이라는 문장이 적혀있다. 이 글귀만큼 이 책을 정확히 설명하는 문장은 더 이상 없을 것 같다. 이렇듯 USB에 관한 모든 내용을 총괄하는 이 멋진 책을 번역하고 감수한 역자의 입장으로서 이 책의 특장점을 몇 가지로 간추리는 것이 더 어렵지만 특별히 두 가지만 꼽아 이야기해보겠다. 첫째, 이 책은 USB에 대한 전반적인 설명과 더불어 MS 윈도우 운영체제에서의 USB 디바이스 드라이버와 관계된 부분에 대해서도 많은 설명을 할애하고 있다. 따라서 독자는 USB는 물론이고 USB 디바이스와 호스트(MS 윈도우)를 포함한 전체 시스템을 이해하는 데 많은 도움을 받을 수 있다. 또한 MS 윈도우가 제공하는 USB 디바이스 드라이버와 관계된 여러 가지 API를 사용한 예제 코드를 비주얼 C++뿐 아니라 비주얼 베이직으로도 제공하고 있어서, 비주얼 베이직 개발자도 드라이버와 통신하는 프로그램을 쉽게 개발할 수 있다. 둘째는 USB와 관련된 로고(logo)에 관한 설명이다. USB 로고에는 Certified USB 로고와 Microsoft Windows 로고가 있다. 이 두 로고는 최종 사용자에게 USB 디바이스를 배포하기 전에 필수적으로 획득해야 하는 것이다. (물론 이 로고가 없어도 최종 사용자에게 판매할 수는 있다. 하지만 최종 사용자는 로고를 획득한 제품을 구매하는 경향이 높다. 또한 해외로 수출할 경우 거의 대부분 로고 획득은 필수적이다). 많은 업체 관계자들이 이런 로고가 있는지조차 모르는 경우가 많아 개발 일정이 지연되는 일이 종종 발생하곤 한다. 그만큼 이 두 로고에 대한 설명이 이 책에 간략하게나마 포함되어 있는 것 또한 큰 장점이라 할 수 있다. 역자가 언급한 이 작은 내용들 외에도 『USB 완전정복』에서는 이 책의 부제처럼 'USB 장치 개발을 위한' 필수적인 많은 내용을 접할 수 있을 것이다. 부디 많은 개발자들에게 도움을 주는 유익한 책이 되기를 바란다. - ㈜하제소프트 --- 역자서문 |
|
성원호
디오이즈(www.dioiz.com) 대표
오늘날 USB는 PC 환경뿐 아니라 디지털 카메라, 전용 프린터, 휴대용 MP3 플레이어, USB 메모리 등 우리가 일상에서 사용하는 가전 제품에서도 흔히 볼 수 있는 데이터 이동 수단으로 자리매김했다. 게다가 조만간 케이블 없이 무선으로 데이터를 전송하는 일까지 가능해질 것이다. 따라서 USB를 사용한 제품과 응용은 앞으로 더 늘어날 것이 분명하다.
이런 USB 장치를 동작하게 하기 위해서는 실제 물리적인 신호를 주고받는 USB 하드웨어는 물론이고 그 하드웨어를 통해 정해진 프로토콜로 데이터를 주고받는 소프트웨어가 필요하다. 문제는 이런 USB 소프트웨어를 작성하는 게 쉽지 않다는 것이다. 물론 PC에서는 윈도우나 리눅스 운영체제가 USB 호스트 역할을 하기 때문에 우리가 신경 쓸 일은 별로 없다. 하지만 임베디드 시스템이 호스트 역할을 해야 할 경우는 문제가 심각하다. 물론 임베디드 시스템에서 사용할 수 있는 상용 USB 소프트웨어 또는 임베디드 리눅스가 있다. 하지만 라이센스 비용, 메모리 크기 등 여러 가지 문제 때문에 여러분의 구미에 딱 맞아 떨어지는 해결책을 찾기란 쉽지가 않다. 상용 소프트웨어 제품을 사용하건 여러분이 직접 개발을 하건, USB에 대한 지식이 많으면 많을수록 더 효율적으로 목적하는 바를 달성할 수 있다. 『USB 완전정복』은 여러분이 USB 개발에 성공적으로 첫 발을 딛게 하는 데 많은 도움을 줄 것이다. 이 책의 저자 Jan Axelson은 USB뿐 아니라 시리얼포트 통신, 병렬포트 통신, TCP-IP 네트워킹 등 임베디드 시스템 분야에서 주로 데이터 통신에 아주 많은 경험이 있으며, 이들 주제를 다룬 세 권의 책도 집필한 바 있다. 이 책 또한 저자의 폭넓은 경험을 토대로 처음 USB에 접근하려는 독자에게 아주 훌륭한 출발점을 제공한다. 저자는 이 책에서 USB-IF가 정의한 분야를 골고루 다루고 있다. 개발자의 입장에서 USB를 설명하고 어떻게 접근해야 할지를 알려주는 책은 세계적으로 이 책 밖에 없다는 점을 강조하고 싶다. 이 책은 여러분이 USB 개발을 위해 기본적으로 무엇을 알아야 하는지, 어디부터 시작해야 하는지, 좀더 심도 있는 관련 정보를 어디에서 찾을 수 있는지, USB 장치 쪽에서는 어떤 것에 중점을 둬야 하는지, PC에서는 어떻게 해야 하는지 등을 모두 알려준다. 모쪼록 『USB 완전정복』이 USB 개발자에게 많은 도움이 되기를 바란다. |