Поделиться через


Стек драйвера SD-карты

Технология Secure Digital (SD) карта началась с портативных миниатюрных карт памяти, но с выпуском спецификации Secure Digital I/O (SDIO) Secure Digital Association (SDA) расширила определение технологии SD, включив в себя широкий спектр карта функций, таких как устройства Bluetooth, видеокамеры, беспроводные локальные устройства и приемники глобальной системы позиционирования (GPS). В этом документе объясняется, как операционная система поддерживает расширения функций карта для технологии SD.

Устройства чтения карт для многих ранних запоминающих устройств SD были разработаны для подключения к USB-шине. Windows управляет этими устройствами с помощью usb-драйвера запоминающих устройств (usbstor.sys) и собственного драйвера класса хранения (disk.sys), как показано на следующей схеме:

схема, иллюстрирующая стек устройств для раннего устройства хранения sd.

Более полное описание стека устройств, создаваемого Windows для карта памяти, который подключается к USB-шине, см. в разделе Пример объекта устройства для запоминающего устройства USB.

Операционная система обеспечивает поддержку контроллеров узла SD, которые подключаются непосредственно к шине PCI. Когда система перечисляет контроллер узла SD, она загружает собственный драйвер шины SD (sdbus.sys). Если пользователь вставляет карта памяти SD, Windows загружает собственный драйвер класса хранения SD (sffdisk.sys) и драйвер мини-порта хранилища (sffp_sd.sys) поверх драйвера автобуса. Если пользователь вставляет SD-карта с другой функцией, например GPS или беспроводной локальной сетью, Windows загружает драйвер, предоставленный поставщиком, для устройства.

Все драйверы устройств в стеке SD, как собственные, так и поставляемые поставщиком, должны взаимодействовать с драйвером шины SD, вызывая подпрограммы в библиотеке статической шины SD (sdbus.lib). Драйверы SD должны связываться с этой библиотекой при компиляции. На следующей схеме показан стек драйвера SD, который система создает при перечислении контроллера SD и сопутствующих карточек:

схема, иллюстрирующая связь между программными и аппаратными компонентами sd.

Драйверы sd-устройств не могут напрямую получить доступ к набору регистров хост-контроллера, а также не могут внедрять сквозные команды для контроллера узла в пакеты запросов ввода-вывода (IRP). Драйверы sd-устройств выдают команды контроллеру узла, вызывая подпрограммы библиотеки шины SD, а затем библиотека создает соответствующие команды SD для хост-контроллера.

Драйверы устройств SD должны обрабатывать стандартные PnP и irP питания, но они не запрашивают и не управляют аппаратными ресурсами, такими как порты, память или векторы прерываний. Следовательно, драйверы sd-устройств не обязаны сопоставлять аппаратные ресурсы при обработке запроса IRP_MN_START_DEVICE . Однако когда драйвер sd-устройства получает запрос IRP_MN_STOP_DEVICE , он должен остановить все операции ввода-вывода. Кроме того, водитель должен закрыть свой интерфейс для водителя автобуса SD в ответ на запрос IRP_MN_QUERY_REMOVE_DEVICE .

При возникновении аппаратного прерывания библиотека шины SD перехватывает прерывание, маскирует дальнейшие прерывания и уведомляет драйвер устройства SD с помощью процедуры обратного вызова о том, что произошло аппаратное прерывание. Описание процедуры обратного вызова, которую драйвер автобуса использует для уведомления драйвера SD-устройства об аппаратных прерываниях, см. в разделе PSDBUS_CALLBACK_ROUTINE. Общие сведения о том, как стек драйвера SD и библиотеки управляют аппаратными прерываниями, см. в разделе Обработка аппаратных прерываний secure digital (SD).

Файл заголовка ntddsd.h , который предоставляется в комплекте драйверов Windows (WDK), объявляет прототипы подпрограмм, предоставляемых библиотекой шины SD.