2015-01-06 3 views
1

현재 USB 작동 방식을 연구하고 있습니다. 나는 작은 조각들 - 패킷들로 이루어진 거래가 있음을 읽었다. 모든 종류의 패킷에 대해 읽었습니다.USB - 프로토콜에 대한 의문이 있습니다.

한 가지를 이해할 수 없습니다. 책이 말했듯이 - 모든 거래는 3 패킷 : 토큰, 데이터 및 hanshake으로 구성됩니다.

내 책을 이해하는 방법은 아래 스키마에 나와 있습니다. 제 생각에는

enter image description here

:

나는 첫 번째 트랜잭션은 토큰 및 데이터 패킷을 포함한다고 생각합니다,하지만 hanshake 패킷 (핸드 셰이크 무엇을 위해?).

응답에는 해당 ACK Hanshake 패킷 만 포함되어야합니다 (데이터가 장치에 올바르게 기록됨).

제발, 내가 올바른 방법으로 이해하도록 도와주세요.

감사합니다. 탐.

답변

1

트랜잭션은 하나 이상의 일련의 패킷입니다.

데이터가없는 거래에서 전형적인

는 다음과 같습니다

  • 호스트는 IN 토큰을 전송합니다.
  • 장치가 NAK 핸드 셰이크 패킷을 전송합니다. 즉, 보낼 데이터가 없습니다.

데이터와 트랜잭션에 전형적인는 다음과 같습니다

  • 호스트는 IN 토큰을 전송합니다.
  • 장치는 데이터가있는 DATA0 또는 DATA1 패킷을 보냅니다.
  • 호스트가 ACK 핸드 셰이크를 보냅니다.

전형적인 OUT 거래는 다음과 같습니다

  • 호스트가 OUT 토큰 전송합니다.
  • 호스트가 데이터와 함께 DATA0 또는 DATA1 패킷을 보냅니다.
  • 장치는 데이터를 수락했는지 여부에 따라 NAK 또는 ACK 핸드 셰이크를 전송합니다.

전 속도 (12Mbps) USB 2.0 장치에 대해 이야기하고 있으며 고속 장치의 경우 좀 더 복잡해 질 수 있습니다.

노이즈 문제로 인해 이러한 패킷이 손실 될 수 있습니다. 특히 USB 사양은 패킷 손실로 인해 장치 나 호스트의 잘못된 작동이 발생하지 않도록 보장합니다.

+0

답변 해 주셔서 감사합니다. :) 내 이해가 정확한지 확인할 수 있습니까? 사실입니다. 장치에 쓰고 싶다면 의사 소통은 다음과 같습니다 (내가 보내려는 데이터 크기가 MaxPacketSize보다 크고 대량 모드로 전송하고 있다고 가정). 1. [pc-> device] OUT 2. [device-> pc] ACK 3. [pc-> 장치] DATA0 4. [장치 -> pc] ACK 5. [pc-> 장치] DATA1 6. [장치 -> pc] ACK 7. [pc-> 장치] DATA0 8. [장치 - pc] ACK 9. [pc-> 장치] DATA1 10. [장치 -> pc] ACK – tomdavies

+1

아니요, 두 번째 패킷을 삭제해야합니다. 데이터가 전송되기 전에 (적어도 최고 속도 장치에 대해 말할 때) 장치가 ACK 패킷을 변경하지 않습니다. 그리고 컴퓨터가 모든 트랜잭션에 대해 OUT 토큰을 보내야한다는 것을 잊고 있으며 OUT 트랜잭션은 하나의 DATA 패킷 만 가질 수 있습니다. 정말로 당신은 제가 대답에서 제공 한 세 가지 예제 거래를보고 그 사본을 만들어야합니다. –

+0

감사합니다. 대단히 감사합니다. 이제 알겠다 :). – tomdavies

관련 문제