The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Первый драйвер: загрузка и удаление драйвера в пространстве пользователя

Первый драйвер: загрузка и удаление драйвера в пространстве пользователя

Предыдущая  Содержание  Следующая V*D*V

Я сейчас покажу вам, как разработать ваш первый драйвер устройства Linux, который будет подключён в ядро в виде модуля.

 

Для этой цели я напишу следующую программу в файле с именем nothing.c.

 

<nothing.c> =

 

#include <linux/module.h>

 

MODULE_LICENSE("Dual BSD/GPL");

 

После выхода ядра версии 2.6.x, компиляция модулей стала немного сложнее. Во-первых, вам необходимо иметь полное, откомпилированное дерево исходных текстов ядра. Если вы имеете систему Debian Sarge, вы можете следовать шагам в Приложении Б (в конце этой статьи). В дальнейшем я буду считать, что используется ядро версии 2.6.8.

 

Далее, вам необходимо сгенерировать Makefile. Makefile для этого примера, который должен быть назван Makefile, будет:

 

<Makefile1> =

 

obj-m := nothing.o

 

В отличие от предыдущих версий ядра, теперь также необходимо компилировать модуль используя то же ядро, с которым вы собираетесь загружать и использовать модуль. Для его компиляции вы можете ввести:

 

$ make -C /usr/src/kernel-source-2.6.8 M=pwd modules

 

Это очень простой модуль для пространства ядра и он станет его частью, как только будет туда загружен. В пользовательском пространстве вы можете загрузить модуль как суперпользователь (root), набрав в строке следующую команду:

 

# insmod nothing.ko

 

Команда insmod разрешает установку модуля в ядро. Однако, от данного модуля пользы не много.

 

Можно проверить, что модуль установлен правильно, просмотрев все установленные модули:

 

# lsmod

 

Наконец, модуль может быть удалён из ядра с помощью команды:

 

# rmmod nothing

 

Введя команду lsmod ещё раз вы можете убедиться, что модуля больше в ядре нет.

 

Итог всего этого показан в Таблице 3.

 

События

Пользовательские функции

Функции ядра

Загрузка модуля

insmod

 

Открытие устройства

 

 

Чтение устройства

 

 

Запись в устройство

 

 

Закрытие устройства

 

 

Удаление модуля

rmmod

 

 

Таблица 3. События драйвера устройства и связанные с ними интерфейсные функции в пространстве ядра и пользовательском пространстве.

 

Предыдущая  Содержание  Следующая