Контрольный список требований к контроллеру GPIO
В этом разделе перечислены требования к оборудованию, встроенному ПО и программному обеспечению для устройств контроллера общего назначения ввода-вывода (GPIO), которые предоставляются в Windows.
Требования к оборудованию контроллера GPIO
Контроллер GPIO интегрирован в SoC (не подключен к шине SPB).
Повышает надежность эмулированного ActiveBoth.
Поддерживаются прерывания в режиме уровня.
Требуется для функций эмуляции ActiveBoth и Debounce.
Поддерживаются как высокая, так и низкая полярности прерываний.
Требуется для функций эмуляции ActiveBoth и Debounce.
Полярность прерываний может быть перепрограммирована во время выполнения.
Требуется для функций эмуляции ActiveBoth и Debounce.
Требования к встроенному ПО контроллера GPIO
Контроллер GPIO _CRS включает все ресурсы для всех банков пин-кодов в контроллере.
Контроллер GPIO _CRS упорядочение ресурсов обеспечивает сопоставление прерываний между банками и системами.
_AEI методы и методы событий (_Exx, _Lxx или _EVT) существуют для любых событий ACPI с сигналом GPIO.
Контроллер GPIO _DSM включен, если какие-либо прерывания ActiveBoth, подключенные к контроллеру, имеют высокий уровень логики, а не низкий уровень логики.
Реализуйте методы _REG для каждого контроллера GPIO и предотвращайте использование OpRegions GeneralPurposeIO, если _REG указывает, что обработчик региона недоступен.
Время ожидания отмены включается в дескриптор ресурса GPIOInt для любого прерывания, требующего дебоунирования.
Требования к драйверу контроллера GPIO
Поддержка версии 2 интерфейса между GpioClx и драйвером контроллера GPIO:
Реализуйте функцию обратного вызова CLIENT_QueryEnabledInterrupts . Это значительно помогает в диагностике штормов прерываний.
Если в структуре CONTROLLER_BASIC_INFORMATION установлен флаг BankIdlePowerMgmtSupported, драйвер контроллера GPIO должен реализовать функции обратного вызова CLIENT_SaveBankHardwareContext и CLIENT_RestoreBankHardwareContext, а эти функции должны сохранять или восстанавливать банковский контекст соответствующим образом, включая маскированную или немаскированную состояния прерываний. Обратите внимание, что прерывания не гарантированно будут отключены во время вызова этой функции, но, если они по-прежнему подключены, они гарантированно будут маскированы.
Если в структуре CONTROLLER_BASIC_INFORMATION установлен флаг DeviceIdlePowerMgmtSupported, функции обратного вызова CLIENT_StartController и CLIENT_StopController должны соответствующим образом сохранять или восстанавливать контекст для всех банков, включая маскированные или немаскированные состояния прерываний. Обратите внимание, что прерывания не гарантированно будут отключены во время вызова этой функции, но, если они по-прежнему подключены, они гарантированно будут маскированы.
Установите флаг EmulateDebouncing в структуре CONTROLLER_BASIC_INFORMATION . Это значительно повышает помехоубийчивость для устройств, прерывания которых подвержены электростатическому разряду (например, кнопки, вилки и т. д.).
Установите флаг EmulateActiveBoth в структуре CONTROLLER_BASIC_INFORMATION и реализуйте функцию обратного вызова CLIENT_ReconfigureInterrupt . Это обеспечивает надежное обнаружение ребер для прерываний ActiveBoth.