Введение в Руководство по проектированию Драйвера устройства Набора I/O
Создать и развернуть драйвер устройства Набора I/O требуют диапазона знания и навыков, некоторые из которых кажутся только удаленно подключенными к бизнесу записи кода драйвера. Например, необходимо упаковать драйвер для установки. Когда вмешательство пользователя необходимо, Вы, возможно, должны локализовать текст и изображения, связанные с диалоговыми окнами драйвера и дисплея. И если код, который Вы пишете, не всегда совершенен, когда сначала введенный, необходимо будет отладить драйвер.
Этот документ описывает различные задачи, которые обычно выполняют писатели драйвера. Это предназначается как своего рода «продолжение» к Основным принципам IOKit. Принимая во внимание, что тот документ прежде всего концептуален в природе — описании таких вещей как архитектура Набора I/O и семьи, обработка событий, и управление памятью и управление питанием — этот документ проявляет более практический подход. Это - набор различных тем, связанных с записью, отладкой, тестированием и развертыванием драйверов устройств Набора I/O.
Кто должен считать этот документ?
При разработке драйвера устройства для выполнения в OS X, необходимо считать этот документ. Поскольку этот документ принимает знакомство с основными понятиями Набора I/O и терминологией, это - хорошая идея считать Основные принципы IOKit сначала. Это также помогает быть знакомым с объектно-ориентированным программированием в целом и программированием на C++ в частности.
Если необходимо разработать приложение, получающее доступ к устройству, необходимо считать вместо этого Получающие доступ Аппаратные средства Из Приложений для получения дополнительной информации о различных способах сделать это. Если это походит на хорошее решение для Вас, знают, что Objective C не обеспечивает интерфейсы для Набора I/O или BSD APIs. Однако, потому что это APIs C, можно вызвать их из приложения Какао.
Организация этого документа
Руководство по проектированию Драйвера устройства Набора I/O имеет следующие главы:
Описывает систему типов libkern библиотеки во время выполнения и роль OSMetaClass в нем. Это также описывает методы для создания объекта и уничтожения, динамического броска, объектного самоанализа и совместимости на уровне двоичных кодов.
Набор libkern и Контейнерные классы
Описывает то, что libkern набор и контейнерные классы и как использовать их. Это включает примеры кода, показывающие, как Ваш драйвер может использовать эти классы для конфигурирования себя в течение времени выполнения.
Обеспечивает обзор методов и вводит определенный в IOService, базовом классе для всех драйверов Набора I/O. Это включает описания методов для соответствия драйвера, отправки и получения уведомлений, клиента и обмена сообщениями провайдера, управления питанием, отображения памяти и обработки прерываний. Эта глава является необходимым ресурсом для тех, которые разрабатывают их собственные семьи I/O Kit или familyless драйверы.
Создание аппаратных средств, доступных для приложений
Запускается путем обсуждения вопросов, связанных с передачей данных между драйвером и программой пространства пользователя и суммирования различных подходов для того, чтобы сделать так. Это тогда описывает один из подходов: Пользовательские пользовательские клиенты. Это дает обзор архитектуры пользователя-клиента и указывает на факторы, влияющие на проект пользовательских клиентов. Наконец, это описывает, как реализовать обе стороны пользовательского клиента: IOUserClient разделяют на подклассы в ядре и библиотеке в пространстве пользователя.
Описывает, как можно использовать Центр Уведомления Пользователя ядра для подарить пользователям локализованные диалоговые окна (блокирование и неблокирование), запустить исполнимые программы пространства пользователя (включая определенные предпочтительные области Установок системы) и загрузить сложные и локализованные пользовательские интерфейсы из пакетов.
Отображение локализованной информации о драйверах
Суммирует шаги для интернационализации пакетов, известных как расширения ядра, и описывает, как получить доступ к локализованным ресурсам в этих пакетах от пространства пользователя.
Набор подсказок и методов для отладки драйверов устройств Набора I/O. Это обсуждает (среди прочего) отладочные программы во время соответствия и загрузки этапов, установки для отладки с двумя машинами, использования макросов отладки ядра, журналирования методов и отладки паники и зависаний системы.
Тестирование и развертывание драйверов
Обсуждает стратегии тестирования драйвера и предлагает руководство при упаковке и развертывании драйверов устройств.
Разработка драйвера устройства для работы основанного на Intel Macintosh
Обеспечивает подсказки для разработки драйвера устройства в ядре для выполнения или в основанном на PowerPC или в основанном на Intel компьютере Macintosh.
Списки изменяются на этот документ.
Определяет ключевые термины, использованные в этом документе.
См. также
В дополнение к Руководству по проектированию Драйвера устройства Набора I/O документация разработчика Apple включает несколько документов, касающихся ядра OS X, Набор I/O в целом и разработка драйвера для определенных устройств. Некоторые из этих документов упоминаются ниже.
Руководство по программированию ядра описывает на высоком уровне архитектуру и средства операционной системы ядра OS X, включая Маха, BSD, Виртуальную файловую систему, сети, виртуальную память и службы ядра. Кроме того, это обсуждает интересные темы для программистов ядра, таких как производительность, безопасность и соглашения кодирования.
Основные принципы IOKit описывают функции, архитектуру, классы и общие механизмы Набора I/O и включают обсуждения соответствия драйвера и загрузки, обработки событий, управления памятью и управления питанием.
Темы Программирования Расширения ядра содержат набор учебных руководств, представляющих Вас средствам разработки и берущих Вас через шаги, требуемые создать, отладить, и упаковать расширения ядра и драйверы Набора I/O. Это также включает информацию о других аспектах расширений ядра.
Документация, предоставляющая всестороннюю информацию о записи драйверов для определенных семейств устройства, доступна в Hardware & Drivers Reference Library.
В дополнение к этим публикациям Apple можно просмотреть страницы справочника BSD для получения дополнительной информации о BSD и POSIX APIs. Можно просмотреть документацию для BSD и функций POSIX и инструментов путем ввода man
function_name в Окне терминала (например, man gdb
) или в HTML в страницах справочника OS X.
Конечно, можно всегда просматривать заголовочные файлы, поставленные с Набором I/O, которые установлены в Kernel.framework/Headers/iokit
(резидентный объект ядра) и IOKit.framework/Headers
(пространство пользователя).
Можно также просмотреть документацию разработчика в XCode. Чтобы сделать это, выберите Help из меню Xcode и затем нажмите Show Documentation Window.
Если Вы готовы создать универсальную версию двоичных файлов своего драйвера устройства для выполнения в основанном на Intel Macintosh, см. Универсальные Двоичные Инструкции по Программированию, Второй Выпуск. Универсальные Двоичные Инструкции по Программированию описывают различия между Intel и архитектурой PowerPC и обеспечивают подсказки для разработки универсального двоичного файла.
Apple поддерживает несколько веб-сайтов, куда разработчики могут пойти для общей и технической информации о Дарвине и OS X.
Дарвинский сайт Открытого исходного кода (http://developer .apple.com/darwin/) содержит информацию и ресурсы для Дарвина и других проектов с открытым исходным кодом, сохраняемых Apple.
Соединение Разработчика Apple: OS X (http://developer .apple.com/devcenter/mac) предлагает SDKs, информацию о версии, примечания продукта и новости, и другие ресурсы и информацию, связанную с OS X.
Сайт поддержки AppleCare (http://www .apple.com/support) обеспечивает функцию поиска, позволяющую Вам определить местоположение технических статей, руководств, спецификаций и обсуждений OS X и других областей.