Microsoft Debug Port Table 2 (DBG2)
Эта спецификация определяет формат таблицы портов отладки 2 (DBG2), используемой в встроенном ПО платформы для описания портов отладки, доступных в системе. Эти сведения относятся к следующим операционным системам: Windows 8 и более поздней версии.
Ссылки и ресурсы, рассматриваемые здесь, перечислены в конце этого документа.
Уведомление о патенте. Корпорация Майкрософт предоставляет определенные патентные права для реализации этой спецификации в двух вариантах:
- Обещание сообщества Майкрософт, доступно по адресу
https://www.microsoft.com/openspecifications/en/us/programs/community-promise/default.aspx
- Соглашение о окончательной спецификации 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, а также новыми портами, например, для которых требуются нестандартные размеры и ширина битов в универсальной структуре адресов.