Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Драйверы устройств в Linux

Оригинал: "Linux Device Drivers Series"
Автор: Anil Kumar Pugalia
Дата публикации: December 1, 2010
Перевод: Н.Ромоданов
Дата перевода: июнь 2012 г.

Оглавление

Цель этой серии статей о драйверах Linux - рассказать об обычной технической теме так, чтобы она была интересна более широкому кругу читателей.

  • "Часть 1: Драйверы устройств Linux для вашей знакомой". В этой заметке обсуждается общая архитектура системы драйверов в Linux.
  • "Часть 2: Пишем в классе наш первый драйвер для Linux". В этой статье рассказано о концепции динамической загрузки драйверов, перечислены команды, с помощью которых осуществляется управление модулями, и представлен простейший драйвер. Показан процесс сборки драйвера и методика загрузки.
  • "Часть 3: Расширения языка C для ядра, используемые в драйверах Linux". В этой статье рассказывается об использовании журнала сообщений ядра и о расширениях компилятора GCC, используемых в ядре.
  • "Часть 4: Символьные драйверы Linux". В этой статье речь идет о различных понятиях, относящихся к символьным драйверам и их реализации, рассматриваются понятия старшего и младшего номера устройства.
  • "Часть 5: Файлы символьных устройств - создание файлов и операции с ними". В этой статье рассказано о том, что файлы устройств можно создавать автоматически с помощью демона udev. А также о втором шаге подключения файла устройства к драйверу устройства - связывании операций над файлом устройства с функциями драйвера устройства.
  • "Часть 6: Декодирование файловых операций для символьного устройства". В этой статье, как и в предыдущих двух статьях, рассматриваются различные понятия, относящиеся к символьным драйверам и их реализации.
  • "Часть 7: Общие принципы доступа к аппаратным устройствам в Linux". В этой статье изучаются общие архитектурно-прозрачные принципы взаимодействия с аппаратным обеспечением, речь идет о доступе к отображаемым в память устройствам в Linux без учета каких-либо конкретных особенностей устройств.
  • "Часть 8: Специальные средства отображения ввода/вывода для аппаратных средств платформы x86". В этой статье продолжается обсуждение доступа к аппаратным средствам в Linux. В отличие от большинства других архитектур, на платформе x86 есть дополнительный механизм доступа к аппаратным средствам - прямое отображение ввода/вывода через так называемые порты. В статье рассказано, как получить доступ к портам, и в качестве примера рассмотрено прграммирование мигающего светодиода.
  • "Часть 9: Управление вводом / выводом в Linux". Операция ввода/вывода (кратко - ioctl) является общей операцией или системным вызовом, который используется в большинстве драйверов различных категорий. Это один из самых универсальных системных вызовов. В этой статье, которая является частью серии статей о драйверах устройств в Linux, рассказывается о типичной реализации ioctl() и ее использовании в Linux.
  • "Часть 10: Отладка в пространстве ядра Linux". Отладка в пространстве ядра отличается от отладки приложений в пользовательском пространстве, когда у нас в нижнем слое работает операционная система, а над ней есть оболочка или графический интерфейс для запуска отладчика (например, отладчика gdb и отладчика data display debugger - ddd). Но есть интересный способ отладки в пространстве ядра с использованием отладчика kgdb, который, начиная с ядра 2.6.26, является частью ядра.
  • "Часть 11: Драйверы USB в Linux". Для того, чтобы самостоятельно написать драйвер USB, потребуется узнать много всего о протоколе USB: конфигурацию устройства, интерфейсы, конвейеры передачи данных, четыре типа передачи данных, а также многое другое из спецификации устройств USB. Эта статья поможет вам начать писать ваш первый драйвер USB в системе Linux.
  • "Часть 12: Драйверы USB в Linux - продолжение". В этой статье рассматриваются категории источников / приемников данных устройств USB и набор структур, в которые драйвер хост контроллера USB заносит информацию об этом устройстве.
  • "Часть 13: Передача данных в устройство и из устройства USB ". В этой статье продолжается обсуждение темы предыдущих двух статей, а именно подробно рассматривается последний этап - передача данных в устройство USB и из устройства USB с использованием нашего первого USB драйвера для Linux.
  • "Часть 14: Исследуем жесткий диск и разбираемся с его разделами". Эта статья познакомит вас с внутренним устройством жесткого диска.
  • "Часть 15: Диск в оперативной памяти — экспериментируем с драйверами блочных устройств". В этой статье рассматривается методика создания жесткого диска в оперативной памяти и проводятся эксперименты с его разделами, форматированием и другими низкоуровневыми операциями, выполняемыми на жестком диске, изучаются основы драйверов блочных устройств, очереди запросов и их обработка.
  • "Часть 16: О директории /proc". В этой статье демонстрируется создание и использование файлов в директории виртуальной файловой системы /proc.
  • "Часть 17: Взаимодействие с модулями". В этой статье демонстрируются различные варианты взаимодействия с модулями Linux (динамически загружаемыми и выгружаемыми драйверами), например, с получением доступа к переменным модуля, вызовом функций модуля и передача в модуль параметров.