다음을 통해 공유


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

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

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

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

  1. Microsoft의 커뮤니티 프라미스, 에서 사용 가능 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일 새 직렬 디버깅 하위 유형(i.MX6, 일반 주소 구조 16550 호환)이 추가되었습니다.
2020년 6월 11일 새 직렬 디버깅 하위 유형이 추가됨(SDM845v2)
2020년 9월 1일 문서를 Markdown 구문으로 변환하고 서식을 변경합니다.
2020년 9월 21일 IALPSS(새 직렬 디버깅 하위 형식)가 추가됨
2021년 2월 17일 알려진 모든 직렬 디버깅 하위 형식 문서화
2023년 4월 10일 새 직렬 디버깅 하위 유형(RISC-V)이 추가되고 16550 호환 하위 유형에 대한 명확한 정보가 추가되었습니다.

소개

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

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

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

표 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 NUL 문자를 포함하여 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 이 디바이스를 고유하게 식별하기 위해 NUL로 종료된 ASCII 문자열입니다. 이 문자열은 ACPI 네임스페이스에서 이 디바이스를 나타내는 개체에 대한 정규화된 참조로 구성됩니다. 네임스페이스 디바이스가 없는 경우 NamespaceString[]에는 단일 ''만 포함되어야 합니다. (ASCII 기간) 문자입니다.
OemData[] OemDataLength OemDataOffset 선택적 가변 길이 OEM 관련 데이터입니다.

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

포트 형식 Subtype Description
예약됨 0x0000 – 0x7FFF 및 0xFFFF 모두 예약됨(사용하지 않음)
직렬 0x8000 0x0000 완전 16550 호환
0x0001 DBGP 수정 버전 1과 호환되는 16550 하위 집합
0x0002 MAX311xE SPI UART
0x0003 Arm PL011 UART
0x0004 MSM8x60(예: 8960)
0x0005 Nvidia 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 RISC-V SBI 콘솔(지원되는 모든 SBI 메커니즘)
0x0016 – 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비트 아키텍처에서만 유효합니다.

16550 기반 UART에 대한 참고 사항

16550 기반 UART에 사용할 수 있는 세 가지 인터페이스 하위 형식이 있습니다. 둘 사이의 차이는 미묘하지만 중요합니다.

  • 인터페이스 하위 형식 0x0 x86 기반 플랫폼에서 볼 수 있듯이 "레거시" 포트 I/O를 사용하는 직렬 포트를 나타냅니다. ARM 또는 RISC-V와 같은 메모리 매핑 I/O를 사용하는 플랫폼에서는 이 형식을 사용하지 않아야 합니다.

  • 인터페이스 하위 유형 0x1 메모리 매핑된 UART를 지원하지만 DBGP ACPI 테이블에서 설명할 수 있는 UART만 지원합니다. 운영 체제 구현은 이를 DBGP 제공 디버그 포트와 동일하게 처리하고 일반 주소 구조의 기본 주소 필드만 적용할 수 있습니다.

  • 인터페이스 하위 유형 0x12 가장 유연한 선택이며 새 플랫폼에서 호환되는 운영 체제를 실행할 때 권장됩니다. 이 하위 형식은 0x0 및 0x1 하위 형식으로 설명할 수 있는 모든 직렬 포트뿐만 아니라 일반 주소 구조에서 기존의 액세스 크기 및 비트 너비가 필요한 포트와 같은 새 포트를 지원합니다.

리소스

ACPI 사양