실제로 "USB 통신 프로토콜"이 있습니까?

실제로 "USB 통신 프로토콜"이 있습니까?

에 따르면위키피디아, USB:

컴퓨터와 전자 장치 간의 연결, 통신 및 전원 공급을 위해 버스에 사용되는 케이블, 커넥터 및 통신 프로토콜을 정의합니다.

그런데 정말 "USB"가 있나요?통신 프로토콜"? 나의이해그것은:

  1. USB 장치를 컴퓨터(예: Ubuntu 또는 모든 종류의 Linux)에 연결합니다.
  2. Linux는 해당 장치에 대한 장치 드라이버를 찾습니다(어쨌든 -보너스알고 계시다면!) 그리고 로드하세요
  3. 이제 장치가 아래에 연결되었습니다./dev/theDevice
  4. 이제 사용자 공간 앱은 읽기/쓰기가 가능하며 /dev/theDevice드라이버는 기본 장치/하드웨어에 대한 낮은 수준의 IO를 처리합니다.

나에게는 이 흐름의 어느 곳에서도 "USB 통신 프로토콜"이 나타나지 않습니다. 내 이해가 맞다면 USB는 PC와 장치를 연결하는 케이블이자 전기적 연결일 뿐입니다.

내가 틀렸나요? USB는 실제로 위의 흐름을 강조하는 일종의 저수준 프로토콜을 구현합니까? 그렇다면 그것은 무엇이며 30,000피트 뷰에서 어떻게 작동합니까?

답변1

응, 봐USB 프로토콜

내가 이해하는 바에 따르면 USB 사양은 계층화된 프로토콜과 장치 프로필의 복잡한 세트를 정의합니다.

예를 들어, USB 장치는 대용량 저장 장치, 키보드(또는 휴먼 인터페이스 장치 등)와 같은 상위 수준 템플릿을 준수하고 일반 장치 드라이버로 관리될 수 있습니다. 일부 USB 장치는 OS 하위 수준 USB 지원이 장치별 상위 수준 드라이버가 필요함을 인식할 수 있도록 하위 수준에서 통신할 수 있습니다.

답변2

질문: 작동 중인 저수준 USB 통신 프로토콜이 있습니까? 그리고 그것은 무엇입니까?

답변:

예, 그렇습니다. USB 사양에는 다음이 포함됩니다.USB 프로토콜이는 버스가 비트 수준에서 사용되는 방식을 정의합니다. 이는 대용량 저장 장치, HID 등과 같은 상위 수준 프로토콜의 기초가 되는 '낮은 수준' 프로토콜입니다.

USB 프로토콜의 작동 방식에 대한 자세한 내용은 다음을 참조하세요.OSDev 위키도움이됩니다. 여기 또 다른 것이 있습니다흥미로운 설명USB 프로토콜당 다양한 데이터 트랜잭션을 설명하기 위해 시퀀스 다이어그램을 사용합니다.

보너스 질문: Linux는 해당 장치에 대한 장치 드라이버를 어떻게 찾고 로드합니까?

보너스답변:

'Linux에서 USB 지원 커널을 사용할 때 작동하는 USB 장치는 다음을 통해 감지됩니다.하드웨어그리고핵심USB 사양 때문입니다. 하드웨어 측면에서는 USB 호스트 컨트롤러가 감지를 수행합니다. 그런 다음 커널에서 호스트 컨트롤러 드라이버가 이어받아 유선의 하위 수준 비트를 USB 프로토콜 형식 정보로 변환합니다. 그러면 이 정보가 커널의 USB 코어 드라이버에 채워집니다.'

나는 이 훌륭한 것을 의역했습니다기사에 대한 오픈소스, Linux 맥락에서 귀하의 질문에 대해 훨씬 더 자세하고 명확합니다.

답변3

거의 모든 유형의 통신 인터페이스와 마찬가지로 USB도 프로토콜로 구현됩니다.스택. 모든 유형 또는 여러 유형의 장치에 공통되는 이 스택 내의 수준은 USB 표준 자체에 의해 정의됩니다. 이는 호환성을 가능하게 하고 각 장치가 중복 프로토콜 설계를 수행하는 것을 방지합니다. 게다가 프로토콜의 각 계층은 다음 계층에서 걱정할 필요가 없는 세부 정보를 추상화합니다. 따라서 실제로 장치별 레이어를 작성할 때 끝점 A에서 끝점 B로 데이터를 가져오는 일반적인 '보내기' 및 '받기' 기능만 있으면 됩니다. 장치 설계자로서 당신은 신경 쓸 필요가 없습니다. 어떻게 그런 일이 일어나는지. 또한 프로토콜 스택 내의 하위 수준은 상위 계층에 공통 인터페이스를 노출하는 한 구현을 변경할 수 있습니다. 이렇게 하면 프로토콜 스택의 한 부분이 변경될 때 스택의 나머지 부분이 반드시 변경될 필요는 없습니다. 이상적으로는 스택의 더 높은 수준에 있는 프로토콜은 정확히 신경 쓸 필요조차 없습니다.어느프로토콜이 스택의 하위 수준에서 사용되고 있습니다. 일반적으로 스택 아래의 각 연속 레이어는 메시지가 전송될 때 자체 페이로드 필드 내에서 다음으로 높은 레이어에서 생성된 메시지를 캡슐화합니다. 메시지가 수신되면 각 계층은 해당 계층과 관련된 부분을 벗겨내고 페이로드를 스택의 다음 적절한 계층으로 전달합니다. 이는 USB뿐만 아니라 거의 모든 통신 버스에 해당됩니다. 예를 들어 TCP/IP/이더넷 스택은 아마도 가장 일반적으로 사용되는 것입니다. 특정 레이어가 일반적으로 담당하는 작업은 다음과 같은 모델에 설명되어 있습니다.OSI 모델.

USB에는 전압 상태/타이밍 등을 정의하는 물리 계층 프로토콜이 있습니다. 전선에서 어떻게 해석되어야 하는지. 이 프로토콜은 주어진 장치에 국한되지 않고 USB 표준 자체의 일부여야 합니다(특히 호스트는 어떤 종류의 장치가 주어진 USB 포트에 연결될지 알 수 없기 때문에).

다음으로, 누가 언제 버스에서 대화할 수 있는지 설명하는 데 사용되는 버스 관리 프로토콜이 있습니다. 이를 OSI 모델에서는 미디어 액세스 계층이라고 합니다. USB에서 이 계층은 "호스트가 지시하면 장치가 전송할 수 있다"고 요약할 수 있으므로 USB의 이 계층에는 특별히 복잡한 프로토콜이 없습니다.

다음에는 표준 프로토콜이 있습니다.데이터 패킷 설명그리고 발신자에서 수신자로 어떻게 라우팅되어야 하는지. 또한 이 계층은 USB 표준 자체의 일부여야 하므로 호스트가 특정 유형의 장치를 실제로 알기 전에 어떤 유형의 장치가 연결되었는지 확인하기 위한 초기 통신이 발생할 수 있습니다. 이 계층에서 특정 ID를 갖는 각 장치 외에도 USB에는 엔드포인트 ID라는 개념이 있습니다. 이를 통해 특정 장치는 표준 TCP/IP 스택에 의해 소켓이 다중화 및 역다중화되는 것과 거의 동일한 방식으로 표준 USB 스택에 의해 다중화 및 역다중화되는 여러 USB 끝점을 가질 수 있습니다. 애플리케이션은 이러한 각 엔드포인트를 별도의 데이터 스트림으로 처리할 수 있습니다.

마지막으로 장치 자체에 대해 정의된 프로토콜이 있습니다. 실제로 대용량 저장 장치, 마우스, 키보드 등과 같은 일반적인 사용 사례에 대해 USB 표준의 일부로 미리 설계된 몇 가지 공통된 것들이 포함되어 있으므로 모든 장치 제조업체가 USB를 다시 개발할 필요가 없습니다. 바퀴. 그러나 더 복잡한 장치는 이 계층에서 자체 사용자 정의 프로토콜을 자유롭게 설계할 수 있습니다. 주어진 전송에 대한 이 계층의 출력은 이전 계층에서 데이터 패킷의 페이로드로 전달됩니다. 충분히 복잡한 장치의 경우 프로토콜의 장치별 부분 자체가 여러 개의 독립 계층으로 분할될 수 있지만 하위 수준에서는 이를 알거나 신경 쓸 필요가 없습니다. 그들이 알아야 할 것은 주어진 바이트 세트를 호스트에서 특정 장치 끝점으로 또는 특정 장치 끝점에서 호스트로 전달해야 한다는 것입니다. 다시 말하지만, 레이어 간 표준 인터페이스를 사용하면 문제를 분리할 수 있으므로 한 레이어는 다른 레이어의 내부 작동에 신경 쓸 필요가 없으며 바로 위 레이어 또는 레이어에서 수신할 것으로 예상되는 특정 데이터만 신경 쓸 필요가 있습니다. 스택 아래에 있습니다.

답변4

아마도 대답의 일부는 "라는 문구의 정의에 있을 것입니다.통신 프로토콜". 동일한 소스(Wikipedia)로 이동하면 다음과 같은 유용한 정보를 찾을 수 있습니다.

  • 통신이 이루어지려면 프로토콜에 대한 합의가 이루어져야 합니다.
  • 통신 시스템은 메시지 교환을 위해 잘 정의된 형식(프로토콜)을 사용합니다.
  • 프로토콜은 통신의 구문, 의미 및 동기화를 정의해야 합니다.
  • 따라서 프로토콜은 하드웨어, 소프트웨어 또는 둘 다로 구현될 수 있습니다.

간단하게 생각하는 방법은 다음과 같습니다.프로토콜은 어떤 작업을 수행하기 위해 미리 정의되고 합의된 방식입니다., 이 경우에는무엇USB 연결 장치 안팎으로 데이터를 이동하는 방법입니다. 하드웨어 측면에서 각각사전 정의된 전압 수준과 사용 프로토콜이 있으며, 각 유형의 장치에는 사전 정의된 사용 프로토콜이 있습니다.모든 핀, 그리고 각각데이터 패킷사전 정의된 구문과 데이터 형식이 있습니다. 의사소통도 있고악수프로토콜이 통합되었습니다. 종합적으로 이들은 USB 장치 사용에 대한 표준 모음의 모든 부분입니다.USB 프로토콜, 이는 구성원에 의해 결정(즉, 설계, 제안, 토론, 수정 및 최종적으로 동의)됩니다.USB 구현자 포럼, Inc.

그럼요, 거기 있어요~이다USB 프로토콜 또는 더 정확하게는~이다미리 정의되고 합의된 USB 프로토콜의 수에스다양한 USB 용도로 사용하세요.

관련 정보