Microsoft 디버그 포트 테이블 2(DBG2)
이 사양은 시스템에서 사용할 수 있는 디버그 포트를 설명하기 위해 플랫폼 펌웨어에 사용되는 DBG2(디버그 포트 테이블 2)의 형식을 정의합니다. 이 정보는 Windows 8 이상 운영 체제에 적용됩니다.
여기에 설명된 참조 및 리소스는 이 문서의 끝에 나와 있습니다.
특허 고지: Microsoft는 다음 두 가지 옵션에 따라 이 사양을 구현할 수 있는 특정 특허권을 제공합니다.
- Microsoft의 Community Promise,에서 사용 가능
https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx- 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비트 아키텍처에서만 유효합니다.