Microsoft 디버그 포트 테이블 2(DBG2)

이 사양은 시스템에서 사용할 수 있는 디버그 포트를 설명하기 위해 플랫폼 펌웨어에 사용되는 DBG2(디버그 포트 테이블 2)의 형식을 정의합니다. 이 정보는 Windows 8 이상 운영 체제에 적용됩니다.

여기에 설명된 참조 및 리소스는 이 문서의 끝에 나와 있습니다.

특허 고지: Microsoft는 다음 두 가지 옵션에 따라 이 사양을 구현할 수 있는 특정 특허권을 제공합니다.

  1. Microsoft의 Community Promise,에서 사용 가능https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
  2. Open Web Foundation 최종 사양 계약 버전 1.0("OWF 1.0")은 2012년 10월 1일부터 http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0사용할 수 있습니다.

문서 기록

Date 변경
2011년 11월 29일 첫 번째 발행물입니다.
2012년 5월 22일 Windows 8 대해 지원되는 최종 플랫폼당 표 3에 대한 업데이트입니다.
2015년 8월 10일 특허 고지가 업데이트되었습니다.
2015년 10월 6일 새 직렬 디버깅 하위 유형 추가(Arm SBSA UART, Arm DCC)
2015년 12월 10일 새 직렬 디버깅 하위 유형이 추가됨(BCM2835)
2017년 5월 31일 새 직렬 디버깅 하위 유형이 추가됨(즉, MX6, 일반 주소 구조 16550 호환)
2020년 6월 11일 새 직렬 디버깅 하위 유형 추가(SDM845v2)
2020년 9월 1일 문서를 Markdown 구문으로 변환하고 서식을 변경합니다.
2020년 9월 21일 새 직렬 디버깅 하위 유형(IALPSS)이 추가됨
2021년 2월 17일 알려진 모든 직렬 디버깅 하위 형식 문서화

소개

Microsoft는 모든 시스템에 디버그 포트가 필요합니다. 플랫폼에서 사용할 수 있는 디버그 포트를 설명하기 위해 Microsoft는 운영 체제별 테이블(DBG2)을 정의합니다. 이 표에서는 디버깅을 위해 하나 이상의 독립 포트를 지정합니다. 디버그 포트 테이블이 있으면 시스템에 디버그 포트가 포함되어 있음을 나타냅니다. 테이블에는 디버그 포트의 구성에 대한 정보가 포함되어 있습니다. 테이블은 다른 ACPI(고급 구성 및 전원 인터페이스) 테이블이 있는 시스템 메모리에 있으며 ACPI RSDT(루트 시스템 설명 테이블)에서 참조해야 합니다.

DBG2 테이블은 DBGP를 사용하여 디버그 포트 구현을 설명할 수 없는 플랫폼의 ACPI 디버그 포트 테이블(DBGP)을 대체합니다.

DBG2(포트 테이블 2) 디버그

표 1. 포트 테이블 2 형식 디버그

표 1은 DBG2의 필드를 정의합니다.

필드 바이트 길이 바이트 오프셋 Description
헤더
서명 4 0 'DBG2'. 디버그 포트 테이블 2에 대한 서명입니다.
길이 4 4 전체 디버그 포트 테이블 2의 길이(바이트)입니다.
수정 버전 1 8 이 버전의 사양에서는 이 값이 0입니다.
체크섬 1 9 전체 테이블은 0으로 합산해야 합니다.
OEM ID 6 10 OEM(원본 장비 제조업체) ID입니다.
OEM 표 ID 8 16 디버그 포트 테이블 2의 경우 테이블 ID는 제조업체 모델 ID입니다.
OEM 수정 버전 4 24 제공된 OEM 테이블 ID에 대한 디버그 포트 테이블 2의 OEM 수정 버전입니다.
작성자 ID 4 28 표를 만든 유틸리티의 공급업체 ID입니다.
작성자 수정 4 32 표를 만든 유틸리티의 수정 버전입니다.
OffsetDbgDeviceInfo 4 36 이 테이블의 시작 부분에서 첫 번째 디버그 디바이스 정보 구조 항목까지 오프셋(바이트)입니다.
NumberDbgDeviceInfo 4 40 디버그 디바이스 정보 구조 항목의 수를 나타냅니다.
디바이스 정보 구조 디버그[NumberDbgDeviceInfo] 변수 OffsetDbgDeviceInfo 이 플랫폼에 대한 디버그 디바이스 정보 구조 목록입니다. 구조체 형식은 이 문서의 뒷부분에 있는 디버그 디바이스 정보 구조 섹션에 정의되어 있습니다.

디바이스 정보 구조 디버그

표 2. 디바이스 정보 구조 형식 디버그

필드 바이트 길이 바이트 오프셋 Description
수정 버전 1 0 디버그 디바이스 정보 구조의 수정 버전입니다. 이 버전의 사양에서는 0이어야 합니다.
길이 2 1 NamespaceString 및 OEMData를 포함하여 이 구조체의 길이(바이트)입니다.
NumberofGenericAddressRegisters 1 3 사용 중인 일반 주소 레지스터의 수입니다.
NameSpaceStringLength 2 4 null 문자를 포함하여 NamespaceString의 길이(바이트)입니다.
NameSpaceStringOffset 2 6 이 구조체의 시작부터 NamespaceString[] 필드까지 오프셋(바이트)입니다. 이 문자열이 있어야 하므로 이 값은 유효해야 합니다.
OemDataLength 2 8 OEM 데이터 블록의 길이(바이트)입니다.
OemDataOffset 2 10 이 구조체의 시작 부분에서 OemData[] 필드로 오프셋(바이트)합니다. OEM 데이터가 없으면 이 값은 0이 됩니다.
포트 유형 2 12 이 디버그 디바이스에 대한 디버그 포트 유형입니다. 이러한 각 값은 표 3에 표시된 대로 해당 하위 형식 값을 갖습니다.
포트 하위 유형 2 14 이 디버그 디바이스에 대한 디버그 포트 하위 유형입니다. 표 3을 참조하세요.
예약됨 2 16 예약됨, 0이어야 합니다.
BaseAddressRegisterOffset 2 18 이 구조체의 시작부터 BaseaddressRegister[] 필드까지 오프셋(바이트)입니다.
AddressSizeOffset 2 20 이 구조체의 시작부터 AddressSize[] 필드까지 오프셋(바이트)입니다.
BaseAddressRegister[] (NumberofGenericAddressRegisters) * 12 BaseAddressRegisterOffset 제네릭 주소의 배열입니다.
AddressSize[] (NumberofGenericAddressRegisters) * 4 AddressSizeOffset 위의 각 일반 주소에 해당하는 주소 크기의 배열입니다.
NamespaceString[] NameSpaceStringLength NameSpaceStringOffset 이 디바이스를 고유하게 식별하기 위한 Null 종료 ASCII 문자열입니다. 이 문자열은 ACPI 네임스페이스에서 이 디바이스를 나타내는 개체에 대한 정규화된 참조로 구성됩니다. 네임스페이스 디바이스가 없으면 NamespaceString[]에 마침표 "."가 포함되어야 합니다.
OemData[] OemDataLength OemDataOffset 선택적 가변 길이 OEM 관련 데이터입니다.

표 3. 디버그 포트 형식 및 하위 형식

포트 Type Subtype Description
예약됨 0x0000 – 0x7FFF 및 0xFFFF 모두 예약됨(사용 안 함)
직렬 0x8000 0x0000 완전 16550 호환
0x0001 DBGP 수정 버전 1과 호환되는 16550 하위 집합
0x0002 MAX311xE SPI UART
0x0003 Arm PL011 UART
0x0004 MSM8x60(예: 8960)
0x0005 엔비디아 16550
0x0006 TI OMAP
0x0007 예약됨(사용 안 함)
0x0008 APM88xxxx
0x0009 MSM8974
0x000A SAM5250
0x000B Intel USIF
0x000C i.MX 6
0x000D (사용되지 않음) Arm SBSA(2.x에만 해당) 32비트 액세스만 지원하는 일반 UART
0x000E Arm SBSA Generic UART
0x000F Arm DCC
0x0010 BCM2835
0x0011 클록 속도가 1.8432MHz인 SDM845
0x0012 제네릭 주소 구조에 정의된 매개 변수와 호환되는 16550
0x0013 클록 속도가 7.372MHz인 SDM845
0x0014 Intel LPSS
0x0015 – 0xFFFF 예약됨(향후 사용)
1394 0x8001 0x0000 IEEE1394 표준 호스트 컨트롤러 인터페이스
0x0001 – 0xFFFF 예약됨(향후 사용)
USB 0x8002 0x0000 디버그 인터페이스가 있는 XHCI 규격 컨트롤러
0x0001 디버그 인터페이스를 사용한 EHCI 규격 컨트롤러
0x0002 – 0x0006 예약됨(사용 안 함)
0x0007 – 0xFFFF 예약됨(향후 사용)
Net 0x8003 NNNN NNNN은 유효한 PCI 할당 공급업체 ID여야 합니다.
0x8004 모두 예약됨(사용 안 함)
예약됨 0x8005 – 0xFFFE 모두 예약됨(향후 사용)

제네릭 주소 구조의 필드에 대한 참고 사항

  • BaseAddressRegister[0]의 제네릭 주소 구조는 일부 직렬 하위 형식에서 사용되는 레지스터 비트 너비 및 액세스 크기를 지정하는 데 사용됩니다.

  • 주소 공간 ID 및 비트 오프셋 등록 필드는 0이어야 합니다.

  • 레지스터 비트 너비 필드는 레지스터 보폭을 포함하며 액세스 크기만큼 큰 2의 힘이어야 합니다. 32비트 플랫폼에서 이 값은 32를 초과할 수 없습니다. 64비트 플랫폼에서 이 값은 64를 초과할 수 없습니다.

  • 액세스 크기 필드는 바이트, WORD, DWORD 또는 QWORD 액세스를 사용할지 여부를 결정하는 데 사용됩니다. QWORD 액세스는 64비트 아키텍처에서만 유효합니다.

리소스

ACPI 사양