C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[11994] 부연설명...USB
김석남 [mrtony] 1744 읽음    2001-10-23 08:55
앞글에 조금 더 설명을 드리지요...^^;
아래는 USB 1.1 의 내용입니다.

다 아시겠지만 USB 하드웨어 개념에서는 호스트와 기기가 1대 다수의 관계이면서 물리적인 배선은 트리형태를 구축할 수 있기는 하지만 논리적인 경로는 1개뿐이라 완전히 동시에 모든기기와 데이터를 송수신 하는것은 불가능합니다. 그래서 USB에서는 PC와 기기 사이에 패킷통신을 하는 것입니다. 또한 호스트 없이 기기끼리는 동조할 수 없기 때문에 모든 패킷송수신의 콘트롤은 호스트가 처리합니다.
호스트...그러니까 PC는 1ms마다 Start Of Frmae(SOF)이라는 신호를 내보내고 여기에서 1ms간격을 1프레임으로 해서 기기에 차례로 패킷의 송수신을 지시합니다.. 이 패킷통신을 위해 USB에는 4개의 데이터 전송모드가 있습니다. 그 중 End Point 0를 사용하여 Control 신호를 내보내는 Control 전송모드는 기기에 신호전달을 위해 항상 열려있으며 나머지 3개의 전송모드는 각 기기에 필요한 데이터 전송의 특성에 따라 선택되어집니다.

Isochronous 전송모드 : 가장 특징적인 전송방법으로 데이터의 전송 대역이 보증되는 방식으로 동영상이나 음성과 같은 연속성이 중요한 데이터를 다루는데 필요한 모드 입니다. 단, 데이터에 오류가 있는 경우에도 재전송 요구가 처리되지 않는 점이 다른 전송모드와는 다른 점입니다. 프레임 중에서 가장 우선순위가 높고 1프레임 내에 최대 1,023byte의 데이터를 포함하는 것이 가능하며 약 8Mbps(1MB/sec)까지 전송속도가 보증됩니다.

Interrupt 전송모드 : 1.5Mbps의 저속 기기에서 사용할 수 있는 유일한 전송모드로, 소량의 데이터를 리얼타임으로 전송할 수 있습니다. 키보드와 마우스 둥의 입력 기기가 이 모드에서 이용됩니다. Isochronous전송모드를 사용하는 기기들과 함께 연결 되어 있어도 1프레임 내에 처리가 가능하므로 리얼타임성을 잃는 경우는 거의 없습니다.

Bulk 전송모드 : 이건 제가 개발하고 있는 기기에도 사용하고 있는 모드로 주로 프린터 등의 데이터량은 크지만 리얼타임성을 요구하지 않는 기기 등에 사용합니다. 또한 이 벌크전송은 우선순위가 위의 두 전송모드보다 낮아서 여러기기가 섞여있을 경우에는 위의 두가지 전송모드를 실행이 우선되고 프레임 내에 여유가 있을때 이 벌크전송이 실행됩니다.



USB와 기존의 RS-232C 인터페이스와 다른점이 있다면 모든 데이터 전송이 호스트의 컨트롤 아래에서 이루어진다는 점인데 이때문에 USB에서는 IRQ를 사용하지 않습니다..아니 엄밀히 말하면 호스트측의 USB 호스트 콘트롤러에만 IRQ가 사용되어지고 이는 OS와의 정보전달에 이용되는 것이므로 이 하나로 모든 기기와의 전송이 커버되는거죠.


요즘 공급되는 USB칩셋은 기본적으로 개념은 같지만 각 칩셋의 특성과 이용 목적상 스팩의 차이가 조금씩 있습니다. 예를 들어 제가 쓰고 있는 칩셋은 14개의 End Point를 제공하지만 제가 실제 스는건 4개만 사용하고 있으므로 다음버젼에서는 아마도 End Point 갯수가 적어도 싼 가격의 스팩을 찾아봐야겠죠.
전송모드 선택방법은 앞글에서 말씀 드렸듯이 DeviceIoControl함수의 파라미터에 제공된 소스의 코드를 넣어서 드라이버에 넘겨주는것으로 끝납니다.^^;

+ -

관련 글 리스트
11873 간단히 다시 질문 드릴게요.....usb인터페이스 사용방법을 알려주십시요^^(c 소스 구함) 급합니다. 박경원 1117 2001/10/18
11880     답변이 될런지..... 류민철 1146 2001/10/18
11879     Re:간단히 다시 질문 드릴게요.....usb인터페이스 사용방법을 알려주십시요^^(c 소스 구함) 급합니다. 지나가는 사람 1311 2001/10/18
11878     Re:간단히 다시 질문 드릴게요.....usb인터페이스 사용방법을 알려주십시요^^(c 소스 구함) 급합니다. 최보현.U&I 1237 2001/10/18
11923         Re:Re:간단히 다시 질문 드릴게요.....usb인터페이스 사용방법을 알려주십시요^^(c 소스 구함) 급합니다. 김석남 1535 2001/10/19
11994             부연설명...USB 김석남 1744 2001/10/23
12004                 Re:usb 자세한 설명에 넘 감사드립니다.^^ 박경원 1273 2001/10/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.