우리 중 대부분은 USB 장치에 대해 많이 생각하지 않고 플러그를 꽂고 잊어 버립니다. 하지만 USB 작동 방식에 대해 더 많이 알고 싶은 호기심 많은 유형이라면 어떨까요? 오늘의 수퍼 유저 Q & A 게시물에는 호기심 많은 독자의 질문에 대한 답변이 있습니다.
오늘의 질문 및 답변 세션은 커뮤니티 중심의 Q & A 웹 사이트 그룹 인 Stack Exchange의 하위 부문 인 SuperUser가 제공 한 것입니다.
사진 제공 : Evilelka Kowalski (Flickr) .
질문
수퍼 유저 리더 smeeb이 실제 USB 통신 프로토콜이 있는지 알고 싶어합니다.
Wikipedia에 따르면 USB :
- 컴퓨터와 전자 장치 간의 연결, 통신 및 전원 공급을 위해 버스에서 사용되는 케이블, 커넥터 및 통신 프로토콜을 정의합니다.
그러나 실제 USB 통신 프로토콜 ? 내 이해는 다음과 같습니다.
- USB 장치를 컴퓨터 (예 : Ubuntu 또는 모든 종류의 Linux)에 연결합니다.
- Linux는 해당 장치의 장치 드라이버를 어떻게 든 찾습니다 ( 아시면 보너스! ) 및로드합니다.
- 이제 장치가 / dev / theDevice .
- 이제 사용자 공간 앱에서 읽고 쓸 수 있습니다. / dev / theDevice 드라이버는 기본 장치 / 하드웨어에 대한 저수준 입력 및 출력을 처리합니다.
내가 말할 수있는 한, USB 통신 프로토콜 이 흐름의 어디에도 나타나지 않습니다. 내 이해가 맞다면 USB는 PC와 장치 간의 케이블 및 전기 연결 일뿐입니다.
내가 틀렸어? USB는 실제로 위의 흐름을 강조하는 일종의 저수준 프로토콜을 구현합니까? 그렇다면 그것이 무엇이며 30,000 피트 뷰에서 어떻게 작동합니까?
실제 USB 통신 프로토콜이 있습니까?
대답
수퍼 유저 기여자 인 RedGrittyBrick과 projectdp가 우리에게 해답을 제공합니다. 먼저 RedGrittyBrick :
예 ( USB 프로토콜 참조 ).
내가 이해하는 바와 같이 USB 사양은 복잡한 계층 프로토콜 및 장치 프로필 집합을 정의합니다.
예를 들어, USB 장치는 대용량 저장 장치, 키보드, 휴먼 인터페이스 장치 등과 같은 고급 템플릿을 준수하고 일반 장치 드라이버로 관리 할 수 있습니다. 일부 USB 장치는 낮은 수준에서 통신 할 수 있으므로 운영 체제의 낮은 수준의 USB 지원이 장치 별 높은 수준의 드라이버가 필요함을 인식 할 수 있습니다.
projectdp의 답변이 이어집니다.
질문
저수준 USB 통신 프로토콜이 작동 중이며 무엇입니까?
대답
네, 있습니다. USB 사양에는 버스가 비트 수준에서 사용되는 방식을 정의하는 USB 프로토콜이 포함됩니다. 이는 상위 수준 프로토콜 (예 : 대용량 저장 장치, HID 등)의 기반이되는 하위 수준 프로토콜입니다.
USB 프로토콜 작동 방식에 대한 자세한 내용은 OSDev 위키 도움이됩니다. 여기에 또 다른 흥미로운 설명 시퀀스 다이어그램을 사용하여 USB 프로토콜 별 다양한 데이터 트랜잭션을 설명합니다.
보너스 질문
Linux는 해당 장치에 대한 장치 드라이버를 어떻게 찾고로드합니까?
보너스 답변
Linux에서 USB 지원 커널을 사용할 때 USB 사양으로 인해 하드웨어 및 커널을 통해 작동하는 USB 장치가 감지됩니다. 하드웨어 측면에서 감지는 USB 호스트 컨트롤러에 의해 수행됩니다. 그런 다음 커널에서 호스트 컨트롤러 드라이버가 유선의 하위 수준 비트를 USB 프로토콜 형식 정보로 변환합니다. 이 정보는 커널의 usbcore 드라이버에 채워집니다.
나는이 훌륭한 것을 의역했습니다. Opensourceforu 기사 , Linux 컨텍스트에서 질문에 대해 훨씬 더 자세하고 명확하게 설명합니다.
아래 공유 된 스레드 링크를 통해 활발한 토론의 나머지 부분을 확인하십시오!
설명에 추가 할 것이 있습니까? 댓글에서 소리를 내십시오. 기술에 정통한 다른 Stack Exchange 사용자의 답변을 더 읽고 싶으신가요? 여기에서 전체 토론 스레드를 확인하십시오. .