USB 3.0 데이터 구조
이 항목에서는 USB 3.0 호스트 컨트롤러 드라이버에서 사용하는 데이터 구조에 대해 설명합니다. 이러한 데이터 구조를 이해하면 USB 3.0 및 RCDRKD 디버거 확장 명령을 효과적으로 사용하는 데 도움이 됩니다. 여기에 표시된 데이터 구조에는 USB 3.0 사양과 일치하는 이름이 있습니다. USB 3.0 사양을 잘 알고 있으면 확장 명령을 사용하여 USB 3.0 드라이버를 디버그하는 기능이 더욱 향상됩니다.
USB 3.0 호스트 컨트롤러 드라이버는 USB 3.0 코어 드라이버 스택의 일부입니다. 자세한 내용은 USB 드라이버 스택 아키텍처를 참조하세요.
각 USB 3.0 호스트 컨트롤러에는 최대 255개의 디바이스가 있을 수 있으며 각 디바이스에는 최대 31개의 엔드포인트가 있을 수 있습니다. 다음 다이어그램에서는 하나의 호스트 컨트롤러와 연결된 디바이스를 나타내는 일부 데이터 구조를 보여 줍니다.
디바이스 컨텍스트 기본 배열
디바이스 컨텍스트 기본 배열은 디바이스 컨텍스트 구조에 대한 포인터 배열입니다. 호스트 컨트롤러에 연결된 각 디바이스에 대해 하나의 디바이스 컨텍스트 구조가 있습니다. 요소 1~255는 디바이스 컨텍스트 구조를 가리킵니다. 요소 0은 호스트 컨트롤러의 컨텍스트 구조를 가리킵니다.
디바이스 컨텍스트 및 슬롯 컨텍스트
디바이스 컨텍스트 구조는 엔드포인트 컨텍스트 구조에 대한 포인터 배열을 보유합니다. 디바이스의 각 엔드포인트에 대해 하나의 엔드포인트 컨텍스트 구조가 있습니다. 요소 1~31은 엔드포인트 컨텍스트 구조를 가리킵니다. 요소 0은 디바이스에 대한 컨텍스트 정보를 보유하는 슬롯 컨텍스트 구조를 가리킵니다.
명령 링
명령 링은 소프트웨어에서 호스트 컨트롤러에 명령을 전달하는 데 사용됩니다. 이러한 명령 중 일부는 호스트 컨트롤러를 대상으로 하며 일부는 호스트 컨트롤러에 연결된 특정 디바이스를 대상으로 합니다.
이벤트 링
이벤트 링은 호스트 컨트롤러에서 소프트웨어에 이벤트를 전달하는 데 사용됩니다. 즉, 이벤트 링은 호스트 컨트롤러가 동작이 완료되었음을 드라이버에 알리는 데 사용하는 구조입니다.
초인종 레지스터 배열
초인종 레지스터 배열은 호스트 컨트롤러에 연결된 각 디바이스에 대해 하나씩 초인종 레지스터의 배열입니다. 요소 1~255는 초인종 레지스터입니다. 요소 0은 명령 링에 보류 중인 명령이 있는지 여부를 나타냅니다.
소프트웨어는 디바이스의 초인종 레지스터에 컨텍스트 정보를 작성하여 수행할 디바이스 관련 또는 엔드포인트 관련 작업이 호스트 컨트롤러에 있음을 알 수 있습니다.
다음 다이어그램은 이전 다이어그램의 오른쪽을 계속합니다. 단일 엔드포인트를 나타내는 추가 데이터 구조를 보여 줍니다.
전송 링
각 엔드포인트에는 하나 이상의 전송 링이 있습니다. 전송 링은 TRB(전송 요청 블록)의 배열입니다. 각 TRB는 하드웨어와 메모리 간에 단일 단위로 전송되는 연속 데이터 블록(최대 64KB)을 가리킵니다.
USB 3.0 코어 스택이 USB 클라이언트 드라이버로부터 전송 요청을 받으면 전송에 대한 엔드포인트 컨텍스트를 식별한 다음 전송 요청을 하나 이상의 TD(전송 설명자)로 나눕니다. 각 TD에는 하나 이상의 TRB가 포함됩니다.
엔드포인트 컨텍스트
엔드포인트 컨텍스트 구조는 단일 엔드포인트에 대한 컨텍스트 정보를 보유합니다. 또한 하드웨어에서 TRB를 사용하는 위치와 소프트웨어에서 TRB를 추가하는 위치를 추적하는 데 사용되는 큐 에 넣기 및 큐에 넣기 멤버가 있습니다.