Поделиться через


Microsoft Debug Port Table 2 (DBG2)

Эта спецификация определяет формат таблицы портов отладки 2 (DBG2), используемой в встроенном ПО платформы для описания портов отладки, доступных в системе. Эти сведения относятся к следующим операционным системам: Windows 8 и более поздней версии.

Ссылки и ресурсы, рассматриваемые здесь, перечислены в конце этого документа.

Уведомление о патенте. Корпорация Майкрософт предоставляет определенные патентные права для реализации этой спецификации в двух вариантах:

  1. Обещание сообщества Майкрософт, доступно по адресу https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
  2. Соглашение о окончательной спецификации Open Web Foundation версии 1.0 ("OWF 1.0") с 1 октября 2012 г., доступно по адресу http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.

Журнал документов

Дата Изменение
29 ноября 2011 г. Первая публикация.
22 мая 2012 г. Обновления в таблицу 3 на окончательные поддерживаемые платформы для Windows 8.
10 августа 2015 г. Обновлено уведомление о патенте.
6 октября 2015 г. Добавлены новые подтипы последовательной отладки (Arm SBSA UART, Arm DCC)
10 декабря 2015 г. Добавлен новый подтип последовательной отладки (BCM2835)
31 мая 2017 г. Добавлен новый подтип последовательной отладки (i.MX6, универсальная структура адресов, совместимая с 16550)
11 июня 2020 г. Добавлен новый подтип последовательной отладки (SDM845v2)
1 сентября 2020 г. Преобразованный документ в синтаксис Markdown и изменения форматирования.
21 сентября 2020 г. Добавлен новый подтип последовательной отладки (IALPSS)
17 февраля 2021 г. Документирование всех известных подтипов последовательной отладки
10 апреля 2023 г. Добавлен новый подтип последовательной отладки (RISC-V) и уточнены сведения о подтипах, совместимых с 16550.

Введение

Корпорации Майкрософт требуется порт отладки во всех системах. Чтобы описать порты отладки, доступные на платформе, корпорация Майкрософт определяет таблицу для операционной системы (DBG2). В этой таблице указан один или несколько независимых портов для отладки. Наличие таблицы портов отладки указывает на то, что в системе есть порт отладки. Таблица содержит сведения о конфигурации порта отладки. Таблица находится в системной памяти вместе с другими таблицами расширенной конфигурации и интерфейса питания (ACPI) и должна быть указана в таблице описания корневой системы ACPI (RSDT).

Таблица DBG2 заменяет таблицу портов отладки ACPI (DBGP) на платформах, реализации портов отладки которых не могут быть описаны с помощью DBGP.

Таблица портов отладки 2 (DBG2)

Таблица 1. Формат таблицы портов отладки 2

В таблице 1 определены поля в DBG2.

Поле Длина байтов Смещение в байтах Описание
Header
Сигнатура 4 0 DBG2. Сигнатура для порта отладки, таблица 2.
Длина 4 4 Длина (в байтах) всей таблицы портов отладки 2.
Редакция 1 8 Для этой версии спецификации это значение равно 0.
Контрольная сумма 1 9 Вся таблица должна суммироваться до нуля.
ИДЕНТИФИКАТОР ИЗГОТОВИТЕЛЯ ОБОРУДОВАНИЯ 6 10 Исходный идентификатор изготовителя оборудования (OEM).
Идентификатор таблицы OEM 8 16 Для таблицы портов отладки 2 идентификатор таблицы является идентификатором модели производителя.
Редакция OEM 4 24 Версия OEM в таблице портов отладки 2 для предоставленного идентификатора таблицы OEM.
Идентификатор создателя 4 28 Идентификатор поставщика служебной программы, создающей таблицу.
Редакция creator 4 32 Редакция служебной программы, создающей таблицу.
OffsetDbgDeviceInfo 4 36 Смещение (в байтах) от начала этой таблицы до первой записи структуры сведений об устройстве отладки.
NumberDbgDeviceInfo 4 40 Указывает количество записей структуры сведений об отладочном устройстве.
Структура сведений об устройстве отладки[NumberDbgDeviceInfo] Переменная OffsetDbgDeviceInfo Список структур сведений об устройствах отладки для этой платформы. Формат структуры определяется в разделе Структура сведений об отладочном устройстве далее в этом документе.

Структура сведений об устройстве отладки

Таблица 2. Формат структуры сведений об устройстве отладки

Поле Длина байтов Смещение байтов Описание
Редакция 1 0 Редакция структуры сведений об отладочном устройстве. Для этой версии спецификации значение должно быть 0.
Длина 2 1 Длина (в байтах) этой структуры, включая NamespaceString и OEMData.
NumberofGenericAddressRegisters 1 3 Количество используемых универсальных регистров адресов.
NamespaceStringLength 2 4 Длина namespaceString в байтах, включая символы NUL.
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 Строка ASCII с завершением NUL для уникальной идентификации этого устройства. Эта строка состоит из полной ссылки на объект , представляющий это устройство в пространстве имен ACPI. Если устройство пространства имен не существует, NamespaceString[] должен содержать только один ". (точка ASCII).
OemData[] OemDataLength OemDataOffset Необязательные данные переменной длины, относящиеся к OEM.

Таблица 3. Типы и подтипы портов отладки

Порт Тип Subtype Описание
Зарезервировано 0x0000 — 0x7FFF и 0xFFFF Все Зарезервировано (не использовать)
Серийный номер 0x8000 0x0000 Полная совместимость с 16550
0x0001 Подмножество 16550 совместимо с DBGP, редакция 1
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) — универсальный интерфейс UART, поддерживающий только 32-разрядные доступы.
0x000E Arm SBSA Generic UART
0x000F Arm DCC
0x0010 BCM2835
0x0011 SDM845 с тактовой частотой 1,8432 МГц
0x0012 16550 совместим с параметрами, определенными в универсальной структуре адресов
0x0013 SDM845 с тактовой частотой 7,372 МГц
0x0014 Intel LPSS
0x0015 Консоль SBI RISC-V (любой поддерживаемый механизм SBI)
0x0016 — 0xFFFF Зарезервировано (для использования в будущем)
1394 0x8001 0x0000 Стандартный интерфейс контроллера узла IEEE1394
0x0001 — 0xFFFF Зарезервировано (для использования в будущем)
USB 0x8002 0x0000 Контроллер, совместимый с XHCI, с интерфейсом отладки
0x0001 Контроллер, совместимый с EHCI, с интерфейсом отладки
0x0002 — 0x0006 Зарезервировано (не использовать)
0x0007 — 0xFFFF Зарезервировано (для использования в будущем)
Net 0x8003 NNNN NNNN должен быть допустимым идентификатором поставщика, назначаемого PCI.
0x8004 Все Зарезервировано (не использовать)
Зарезервировано 0x8005 — 0xFFFE Все Зарезервировано (для использования в будущем)

Примечание к полям универсальной структуры адресов

  • Универсальная структура адресов в BaseAddressRegister[0] используется для указания ширины регистра и размера доступа, используемых некоторыми подтипами последовательных типов.

  • Поля Идентификатор адресного пространства и Регистр битовое смещение должны иметь значение 0.

  • Поле Ширина бита регистра содержит шаг регистра и должно иметь значение 2, по крайней мере равное размеру доступа. На 32-разрядных платформах это значение не может превышать 32. На 64-разрядных платформах это значение не может превышать 64.

  • Поле Размер доступа используется для определения того, следует ли использовать доступы байтов, WORD, DWORD или QWORD. Доступы QWORD допустимы только в 64-разрядных архитектурах.

Примечание о UART на основе 16550

Существует три подтипа интерфейса, которые можно использовать для UART на основе 16550. Различия между ними незначительны, но важны.

  • Подтип интерфейса 0x0 относится к последовательному порту, который использует "устаревшие" портовые операции ввода-вывода, как показано на платформах x86. Этот тип следует избегать на платформах, использующих операции ввода-вывода, сопоставленные с памятью, например ARM или RISC-V.

  • Подтип интерфейса 0x1 поддерживает сопоставленные UART в памяти, но только те, которые описаны в таблице DBGP ACPI. Реализации операционной системы могут рассматривать это как эквивалент порта отладки, предоставленного DBGP, и учитывать только поле Базовый адрес универсальной структуры адресов.

  • Подтип интерфейса 0x12 является наиболее гибким вариантом и рекомендуется при запуске совместимых операционных систем на новых платформах. Этот подтип поддерживает все последовательные порты, которые могут быть описаны подтипами 0x0 и 0x1, а также новыми портами, например, для которых требуются нестандартные размеры и ширина битов в универсальной структуре адресов.

Ресурсы

Спецификация ACPI