Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта спецификация определяет формат таблицы портов отладки 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.
Document History
| Date | Change |
|---|---|
| 29 ноября 2011 г. | First publication. |
| 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 |
Introduction
Корпорация Майкрософт требует отладочного порта во всех системах. Чтобы описать порты отладки, доступные на платформе, корпорация Майкрософт определяет таблицу для конкретной операционной системы (DBG2). Эта таблица задает один или несколько независимых портов для целей отладки. Наличие таблицы портов отладки указывает, что система включает порт отладки. Таблица содержит сведения о конфигурации порта отладки. Таблица находится в системной памяти с другими таблицами advanced Configuration and Power Interface (ACPI) и должна быть указана в таблице описания корневой системы ACPI (RSDT).
Таблица DBG2 заменяет таблицу портов отладки ACPI (DBGP) на платформах, реализация портов отладки которых не может быть описана с помощью DBGP.
Таблица портов отладки 2 (DBG2)
Table 1. Формат таблицы портов отладки 2
Таблица 1 определяет поля в DBG2.
| Field | Byte length | Byte offset | Description |
|---|---|---|---|
| Header | |||
| Signature | 4 | 0 | 'DBG2'. Подпись для таблицы портов отладки 2. |
| Length | 4 | 4 | Длина в байтах всей таблицы портов отладки 2. |
| Revision | 1 | 8 | Для этой версии спецификации это значение равно 0. |
| Checksum | 1 | 9 | Вся таблица должна суммироваться до нуля. |
| OEM ID | 6 | 10 | Исходный идентификатор изготовителя оборудования (OEM). |
| Идентификатор таблицы OEM | 8 | 16 | Для таблицы портов отладки 2 идентификатор таблицы — это идентификатор модели производителя. |
| OEM Revision | 4 | 24 | Редакция OEM таблицы портов отладки 2 для предоставленного идентификатора таблицы OEM. |
| Creator ID | 4 | 28 | Идентификатор поставщика служебной программы, создавшего таблицу. |
| Creator Revision | 4 | 32 | Редакция служебной программы, создающей таблицу. |
| OffsetDbgDeviceInfo | 4 | 36 | Смещение в байтах с начала этой таблицы до первой записи структуры сведений об отладочном устройстве. |
| NumberDbgDeviceInfo | 4 | 40 | Указывает количество записей структуры сведений об отладочном устройстве. |
| Отладка структуры сведений об устройстве[NumberDbgDeviceInfo] | Variable | OffsetDbgDeviceInfo | Список структур сведений об отладочном устройстве для этой платформы. Формат структуры определен в разделе структуры сведений об отладочном устройстве, далее в этом документе. |
Отладка структуры сведений об устройстве
Table 2. Формат структуры сведений об устройстве отладки
| Field | Byte length | Byte offset | Description |
|---|---|---|---|
| Revision | 1 | 0 | Редакция структуры сведений об отладочном устройстве. Для этой версии спецификации это должно быть 0. |
| Length | 2 | 1 | Длина в байтах этой структуры, включая NamespaceString и OEMData. |
| NumberofGenericAddressRegisters | 1 | 3 | Число используемых универсальных регистров адресов. |
| NamespaceStringLength | 2 | 4 | Длина в байтах пространства именString, включая символы NUL. |
| NamespaceStringOffset | 2 | 6 | Смещение в байтах с начала этой структуры до поля NamespaceString[]. Это значение должно быть допустимым, так как эта строка должна присутствовать. |
| OemDataLength | 2 | 8 | Длина блока данных OEM в байтах. |
| OemDataOffset | 2 | 10 | Смещение в байтах в поле OemData[] с начала этой структуры. Это значение будет равно 0, если данные OEM отсутствуют. |
| Port Type | 2 | 12 | Тип порта отладки для этого устройства отладки. Каждое из этих значений будет иметь соответствующее значение подтипа, как показано в таблице 3. |
| Port Subtype | 2 | 14 | Подтип порта отладки для этого устройства отладки. См. таблицу 3. |
| Reserved | 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 | Необязательные данные изготовителя оборудования переменной длины. |
Table 3. Отладка типов портов и подтипов
| Port | Type | Subtype | Description |
|---|---|---|---|
| Reserved | 0x0000 — 0x7FFF и 0xFFFF | All | Зарезервировано (не используйте) |
| Serial | 0x8000 | 0x0000 | Fully 16550-compatible |
| 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) Generic 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 | 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 |
| 0x8004 | All | Зарезервировано (не используйте) | |
| Reserved | 0x8005 — 0xFFFE | All | Зарезервировано (для дальнейшего использования) |
Примечание к полям универсальной структуры адресов
Структура универсального адреса в BaseAddressRegister[0] используется для указания ширины регистра и размера доступа, используемого некоторыми серийными подтипами.
Идентификатор адресного пространства и поля "Регистрация битового смещения" должны иметь значение 0.
Поле "Ширина регистра" содержит шаг регистрации и должно иметь значение 2, которое по крайней мере равно размеру доступа. На 32-разрядных платформах это значение не может превышать 32. На 64-разрядных платформах это значение не может превышать 64.
Поле "Размер доступа" используется для определения того, следует ли использовать доступ к байтам, WORD, DWORD или QWORD. Доступ к QWORD действителен только в 64-разрядных архитектурах.
Примечание о UART на основе 16550
Существует три подтипа интерфейса, которые можно использовать для UART на основе 16550. Различия между ними являются тонкими, но важными.
Подтип интерфейса 0x0 относится к последовательному порту, который использует "устаревший" порт ввода-вывода, как показано на платформах на основе x86. Этот тип следует избегать на платформах, использующих операции ввода-вывода, сопоставленные с памятью, например ARM или RISC-V.
Подтип интерфейса 0x1 поддерживает сопоставленные UARTs памяти, но только те, которые описаны в таблице ACPI DBGP. Реализации операционной системы могут рассматриваться как эквивалентные порту отладки, предоставленному DBGP, и учитывать только поле базового адреса универсальной структуры адресов.
Подтип интерфейса 0x12 является наиболее гибким выбором и рекомендуется при запуске совместимых операционных систем на новых платформах. Этот подтип поддерживает все последовательные порты, которые можно описать подтипами 0x0 и 0x1, а также новые, например те, которые требуют не традиционных размеров доступа и ширины битов в структуре универсального адреса.