Первый драйвер: загрузка и удаление драйвера в пространстве пользователя |
Предыдущая Содержание Следующая |
Я сейчас покажу вам, как разработать ваш первый драйвер устройства 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.
Таблица 3. События драйвера устройства и связанные с ними интерфейсные функции в пространстве ядра и пользовательском пространстве.
| |||||||||||||||||||||
Предыдущая Содержание Следующая |