Работа с технологией удара молнии

Эта глава обеспечивает инструкции для работы с технологией Удара молнии. Помните эти инструкции при создании совместимых устройств.

Обнаружение устройств удара молнии

Когда новое устройство Удара молнии было присоединено, системное программное обеспечение используется, чтобы обнаружить устройства Удара молнии и определить. Программное обеспечение обнаруживает весь DisplayPort и устройства PCI, и создает пути Удара молнии к тем устройствам с помощью любых доступных ресурсов. Как только пути создаются, применимый драйвер (ы) OS уведомляются присутствию устройств.

В случае DisplayPort графические драйверы могут осветить экран. Экран только освещен на основе возможностей GPU.

В случае PCI, семья I/O PCI (IOPCIFamily) в I/O Набор ответственен за перечисление моста PCI в чипе контроллера и любых нисходящих мостов или устройств.

Используя ресурсы PCI мудро

Ресурсы PCI (номера шины, апертуры памяти) недостаточны и программисты, и производители устройств должны приложить все усилия для представления истинных требований устройства.

Например, рассмотрите устройство PCI, имеющее многократные функции, где только функционируют 0, будет использоваться в приложении. Функции PCI кроме функции 0 должны быть скрыты от OS, если это возможно, путем возврата 0xFFFFFFFF для Чтения Конфигурации при смещении 0 для той функции. Другим примером является устройство, требующее только 2 КБ апертуры для I/O С отображенной памятью (MMIO) пространство, но вместо этого сообщающее о 64 КБ апертуры во время перечисления. Эти устройства должны сообщить о точных апертурных значениях.

На пространство I/O нельзя рассчитывать при разработке для интерфейса Thunderbolt. Ограничения PCI требуют распределения пространства I/O 4 КБ на Мост PCI, и общее пространство I/O в масштабе всей системы составляет только 64 КБ. Поэтому используйте MMIO вместо того, чтобы полагаться на распределения пространства I/O для устройств. Даже если площадь I/O не могла бы быть должным образом выделена для устройства, Используя MMIO позволяет операционной системе загружать драйвер устройства.

Признание задержки PCI

Устройства на шине Удара молнии показывают более высокую задержку, чем устройства на внутренних слотах — приблизительно 1,5 микросекунды задержки туда и обратно на транзитный участок. Это означает, что помещение устройства в конце цепочки Удара молнии может составить в целом 9 микросекунд задержки туда и обратно. Большинство устройств и драйверов обрабатывают эту дополнительную коммуникационную задержку без определенной трудности. В некоторых случаях, однако, Ваш драйвер или микропрограмму устройств нужно настроить для признания той задержки.

Например:

И т.д. Подробные данные очень зависят от драйвера.

Используя зарегистрированный идентификатор поставщика

Каждое устройство Удара молнии должно иметь Устройство ROM (DROM), содержащий информацию о поставщике и устройстве, а также 64-разрядном UID, однозначно определяющем устройство. У каждого поставщика должен быть зарегистрированный идентификатор поставщика с Ударом молнии, называющим полномочия (Intel).

Включение драйверов устройств PCI для работы удара молнии

Для объявления поддержки технологии Удара молнии следующий ключ должен быть добавлен к каждому из лиц в водительском Info.plist файл.

Перечисление 2-1  ключ драйвера PCI (работа удара молнии)

<key>IOPCITunnelCompatible</key>
<true/>

Необходимо включать ключ в разделе IOKitPersonalities Info.plist файл или IOPCIFamily не загрузится драйверы для Удара молнии подключили устройства PCI. Это выбирает - в ключе, защищает потребителей от более старых драйверов, еще не обновленных для поддержки технологии Удара молнии. Этот метод также упрощает для сторонних разработчиков, должным образом обновивших их драйвер, чтобы показать, что они сделали так. (См. драйвер в качестве примера Перечисление 2-2.)

Драйвер в качестве примера, включающий этот ключ в одном из его лиц, AppleAHCIPort.kext, который показан в Индивидуальности Драйвера PCI (Набор ключей Удара молнии).

Перечисление 2-2  индивидуальность драйвера PCI (набор ключей удара молнии)

<key>GenericAHCI</key>
<dict>
         <key>CFBundleIdentifier</key>
         <string>com.apple.driver.AppleAHCIPort</string>
         <key>Chipset Name</key>
         <string>AHCI Standard Controller</string>
         <key>IOClass</key>
         <string>AppleAHCI</string>
         <key>IOPCIClassMatch</key>
         <string>0x01060100&0xffffff00</string>
         <key>IOProbeScore</key>
         <integer>800</integer>
         <key>IOProviderClass</key>
         <string>IOPCIDevice</string>
         <key>Vendor Name</key>
         <string>Unknown</string>
         key>IOPCITunnelCompatible/key>
         <true/>
</dict>

Проверка соединений удара молнии в устройствах PCI

Драйверы устройств PCI могут определить, подключается ли устройство Удара молнии путем рекурсивного поиска по родителям в Реестре I/O для ключа IOPCITunnelled. (См. Перечисление 2-3 примера кода.)

Перечисление 2-3  , проверяющее соединения удара молнии

#include < IOKit/pci/IOPCIDevice.h>
bool tb = false;
if ( getProperty ( kIOPCITunnelledKey, gIOServicePlane, kIORegistryIterateRecursively | kIORegistryIterateParents ) )
     tb = true;

Кроме того, драйверы устройств PCI, представляющие хранение операционной системе, должны гарантировать, что ключ «Physical Interconnect Location» устанавливается, чтобы указать, что внешне подключается устройство. (См. физическое взаимосвязанное ключевое Перечисление 2-4 расположения в качестве примера.)

Перечисление 2-4  драйвер PCI: внешний набор ключа хранения

setProperty ( kIOPropertyPhysicalInterconnectLocationKey,
kIOPropertyExternalKey );