usb 패킷 길이 확인이라고 해야하나?

 

    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0080  1x 128 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0b00  2x 768 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       5
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0c00  2x 1024 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       6
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x1380  3x 896 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       7
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x1400  3x 1024 bytes
        bInterval               1

[링크 : https://www.thegoodpenguin.co.uk/blog/understanding-why-usb-isochronous-bandwidth-errors-occur/]

[링크 : https://community.infineon.com/t5/Knowledge-Base-Articles/Throughput-for-Isochronous-Transfers-for-FX2LP/ta-p/250158#.]

[링크 : https://ndb796.tistory.com/392]

 

 


USB 아이소크로노스 고대역폭(High-Bandwidth Isochronous) 전송
은 오디오, 비디오, 웹캠처럼 데이터가 끊기지 않고 실시간성(Time-critical)이 보장되어야 하는 장치를 위해, 하나의 서비스 주기(Microframe) 내에서 여러 개의 데이터 패킷을 연속으로 전송하여 대역폭을 극대화하는 기술입니다. [1, 2]
USB 엔드포인트(Endpoint) 설명자와 하드웨어 수준에서 설계된 이 방식의 핵심 원리와 동작 방식은 다음과 같습니다.
 
1. 고대역폭 아이소크로노스의 핵심 원리
일반적인 USB 2.0 High-Speed 모드에서 아이소크로노스 엔드포인트는 1 마이크로프레임(Microframe = 125µs)마다 최대 1개의 데이터 패킷(최대 1024 바이트)만 전송할 수 있습니다. [1, 2]
하지만 고화질 비디오 스트리밍처럼 1024바이트를 초과하는 대역폭이 필요할 때 고대역폭 엔드포인트를 활성화합니다. [1]
 
  • 추가 트랜잭션 요청: 단일 마이크로프레임 내에서 최대 2개의 패킷을 추가로 더 요청할 수 있습니다. [1]
  • 대역폭 확장 수치 (USB 2.0 High-Speed 기준):
    • 00 (기본): 마이크로프레임당 1개 패킷 (최대 1,024 바이트)
    • 01 (1개 추가): 마이크로프레임당 2개 패킷 (최대 2,048 바이트)
    • 10 (2개 추가): 마이크로프레임당 3개 패킷 (최대 3,072 바이트)
2. 엔드포인트 기술 사양 (Descriptor 사양)
펌웨어나 USB 컨트롤러 드라이버 레벨에서 고대역폭을 활성화하려면 엔드포인트 디스크립터(Endpoint Descriptor)의 wMaxPacketSize 필드의 상위 비트를 수정해야 합니다: [1]
  • Bit 10 ~ 0: 기본 패킷 크기를 지정합니다 (예: 1024 크기면 0x400). [1, 2]
  • Bit 12 ~ 11: 마이크로프레임당 추가 전송 기회를 설정합니다.
    • 01 : 마이크로프레임당 2번 전송 (비트 추가)
    • 10 : 마이크로프레임당 3번 전송 (비트 추가)
3. USB 3.0(SuperSpeed) 이상에서의 확장
USB 3.0 SuperSpeed 이후부터는 구조가 더욱 확장되어 고대역폭 아이소크로노스를 버스트(Burst) 전송 Mult(Multiplier) 개념으로 처리합니다. [1, 2, 3]
 
  • 이론상 최대 전송량: SuperSpeed에서는 단일 주기 내에서 최대 16개의 버스트 크기와 3개의 Mult를 조합하여 1024 바이트 × 16 × 3 = 49,152 바이트를 한 주기에 쏟아부을 수 있습니다. [1]
  • 이를 통해 UHD(4K/8K) 카메라나 비압축 고화질 영상 캡처 장비도 지연 없이 안정적으로 데이터를 밀어줄 수 있습니다
4. 주요 특징 및 주의사항
  • 에러 재전송 없음 (No Retries): 벌크(Bulk) 전송과 달리 데이터에 CRC 에러가 발생해도 다시 보내지 않고 다음 패킷으로 넘어갑니다. 데이터의 무결성보다 정해진 시간에 데이터가 도착하는 시간적 연속성이 훨씬 중요하기 때문입니다. [1, 2, 3, 4, 5]
  • 대역폭 예약제: 호스트 컨트롤러는 아이소크로노스 전송을 위해 전체 USB 대역폭의 일정 비율(최대 80~90%)을 미리 고정으로 묶어둡니다. [1]
  • 대역폭 부족 오류 (Bandwidth Error): 여러 대의 고대역폭 웹캠을 하나의 USB 허브에 물리거나, 하나의 호스트 컨트롤러에 고대역폭 아이소크로노스 장치를 동시에 여러 개 연결하면 "USB 대역폭 초과" 에러가 발생하며 장치 인식이 되지 않을 수 있습니다. 이 경우 기기 드라이버에서 대체 설정(Alternative Setting)을 통해 요구 대역폭을 낮추거나 별도의 USB 컨트롤러에 분산 연결해야 합니다. [1]

'이론 관련 > 컴퓨터 관련' 카테고리의 다른 글

NCHW, NHWC  (0) 2026.05.06
품질 관리 체크리스트 - p0 p1 p2 p3?  (0) 2026.04.23
asus 메인보드 에러코드(q code)와 부팅절차  (0) 2026.04.20
intel hex 포맷  (0) 2026.03.24
sd 카드 spi 모드 관련 조사  (0) 2026.03.17
Posted by 구차니