Контрольный список требований контроллера GPIO

В этом разделе приведены сведения о требованиях к оборудованию, встроенному ПО и программному обеспечению для устройств контроллеров ввода-вывода общего назначения (GPIO), предоставляемых Windows.

Требования к оборудованию контроллера GPIO

  • Контроллер GPIO интегрирован в SoC (не подключен к шине SPB).

    Повышает надежность работы эмуляции ActiveBoth.

  • Поддерживаются прерывания в режиме уровня.

    Требуется для функций эмулирования ActiveBoth и Debounce Emulation.

  • Поддерживаются как высокая, так и низкая полярности прерываний.

    Требуется для функций эмулирования ActiveBoth и Debounce Emulation.

  • Полярность прерывания может быть перепрограммирована во время выполнения программы.

    Требуется для функций эмулирования ActiveBoth и Debounce Emulation.

Требования к встроенному ПО контроллера GPIO

  • Контроллер GPIO _CRS включает все ресурсы для всех банков пинов в контроллере.

  • Контроллер GPIO обеспечивают порядок ресурсов _CRS для сопоставления прерываний между банком и системой.

  • методы _AEI и методы событий (_Exx, _Lxx или _EVT) существуют для всех событий ACPI с сигналом GPIO.

  • Контроллер GPIO поддерживает функцию _DSM, если какие-либо прерывания ActiveBoth, подключенные к контроллеру, срабатывают при высоком логическом уровне вместо низкого.

  • Реализуйте методы _REG для каждого контроллера GPIO и предотвращайте использование GeneralPurposeIO OpRegions, если _REG указывает, что обработчик региона недоступен.

  • Дескриптор времени ожидания debounce включен в дескриптор ресурса GPIOInt для любого прерывания, требующего отмены.

Требования к драйверу контроллера GPIO

  • Поддержка версии 2 интерфейса между GpioClx и драйвером контроллера GPIO:

    • Реализуйте функцию обратного вызова CLIENT_QueryEnabledInterrupts . Это значительно помогает в диагностировании бурь прерываний.

    • Если флаг BankIdlePowerMgmtSupported задан в структуре CONTROLLER_BASIC_INFORMATION , драйвер контроллера GPIO должен реализовать CLIENT_SaveBankHardwareContext и CLIENT_RestoreBankHardwareContext функции обратного вызова, и эти функции должны сохранять и восстанавливать контекст банка соответствующим образом, включая маскированные или незамаскированные состояния прерываний. Обратите внимание, что прерывания не обязательно будут отключены во время вызова этой функции, но, если они по-прежнему подключены, они гарантированно будут замаскированы.

    • Если флаг DeviceIdlePowerMgmtSupported задан в структуре CONTROLLER_BASIC_INFORMATION , CLIENT_StartController иCLIENT_StopController функции обратного вызова должны сохранять и восстанавливать контекст для всех банков соответствующим образом, включая маскированные или незамаскированные состояния прерываний. Обратите внимание, что прерывания не гарантированно будут отключены во время вызова этой функции, но, если они по-прежнему подключены, они гарантированно маскируются.

  • Задайте флаг EmulateDebouncing в структуре CONTROLLER_BASIC_INFORMATION . Это значительно повышает устойчивость к шуму для устройств, чьи прерывания подвержены электростатическому разряду (таким как кнопки, разъемы и т. д.).

  • Задайте флаг EmulateActiveBoth в структуре CONTROLLER_BASIC_INFORMATION и реализуйте функцию обратного вызова CLIENT_ReconfigureInterrupt . Это обеспечивает надежное обнаружение границ для прерываний типа ActiveBoth.