ПОИП    

  ЛР 1 ~ 
  ЛР 2 ~ 
  ЛР 3 ~ 
  ЛР 4 ~ 
/Студентам/ПОИП/ЛР 3

Лабораторная работа #3

Разработка драйверов устройств для ОС Linux

Цель работы

Целью данной работы является изучение принципов разработки драйверов символьных устройств для ОС Linux и написание простого драйвера для встроенного динамика ЭВМ i386.

Порядок выполнения работы

  1. Изучить устройство таймера i8253/4 и алгоритмы работы с ним
    (см. Лабораторную работу #1)
  2. Изучить основные правила написания драйверов символьных устройств в ОС Linux

    При изучении этих правил можно воспользоваться следующими материалами:

  3. Изучить исходные тексты шаблона драйвера (серия ядер 2.6)
  4. Дописать драйвер, реализовав функции pc_speaker_setfrq(), pc_speaker_on(), pc_speaker_off()

    Для работы с портами ввода-вывода используйте следующие макроопределения:

    	outb(val, port);
    	inb(port);
    

    Первое из них предназначено для записи значения val в порт номер port, возвращаемого значения не имеет. Второе предназначено для чтения содержимого порта номер port, возвращает, собственно, это содержимое.

  5. Для компиляции драйвера нужно выполнить команду
    make -C /usr/src/linux M=`pwd` modules
    (в каталоге, где находятся его исходные тексты)
  6. Загрузите драйвер (команда insmod). После этого с помощью команды dmesg посмотрите сообщения, выданные драйвером при загрузке. Кроме этого, посмотрите информацию о специальном файле устройства, который создается в процессе загрузки драйвера; сопоставьте информацию об этом файле с исходным текстом драйвера
  7. Разработайте и отладьте программу (на языке программирования C или Pascal), которая выводит на динамик заданную мелодию, используя для этого обращения к драйверу
  8. Убедитесь в работоспособности драйвера и программы
  9. Проделайте следующие действия: во время работы программы запустите ее второй экземпляр (желательно проигрывающий другую мелодию). Объясните наблюдаемую картину.
  10. Продемонстрируйте работу программы преподавателю
  11. Выгрузите драйвер (команда rmmod)

Пример более сложного драйвера
(драйвер магистрально-модульного приборного интерфейса CAMAC, для серии ядер 2.4)

Еще пример (подробно изучается в курсе лекций)
(драйвер модема, подключенного к SSC NGW100/Atmel AP7000)

Дата последней модификации: 2012-03-21


/Студентам/ПОИП/ЛР 3

Содержимое данного сайта может быть использовано кем угодно, когда угодно, как угодно и для каких угодно целей. Автор сайта не несёт абсолютно никакой ответственности за землетрясения, наводнения, финансовые кризисы, глобальные потепления/похолодания, разбитые тарелки, зуд/онемение в левой/правой пятке читателя, эпидемии/пандемии свинячьего/птичьего/тараканьего и иных гриппов, а также за прочие негативные, равно как и позитивные, последствия, вызванные прямым или косвенным использованием материалов данного сайта кем бы то ни было, включая самого автора. При копировании/цитировании материалов данного сайта любым технически возможным в настоящее время способом, а также способом, могущим стать возможным в будущем, указание (либо неуказание) ссылки на первоисточник лежит, блин, тяжким грузом на совести копирующего/цитирующего.

Valid HTML 4.0 Strict Valid CSS!