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

Глава 15. Как поместить драйвер в дерево ALSA

Глава 15. Как поместить драйвер в дерево ALSA

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

Общие сведения

До сих пор вы учились писать код драйверов. И вы, возможно, теперь имеете вопрос: как поместить свой драйвер в дерево драйверов ALSA? Здесь (в конце концов :) вкратце описана стандартная процедура.

 

Предположим, что вы создаёте новый драйвер для PCI карты "xyz". Названием модуля карты было бы snd-xyz. Новый драйвер обычно помещается в дерево драйверов ALSA, в случае карт PCI это каталог alsa-driver/pci. Затем драйвер оценивается, проверяется и испытывается разработчиками и пользователями. Через некоторое время драйвер перейдёт в дерево ядра ALSA (в соответствующий каталог, например, alsa-kernel/pci) и в конечном итоге будет интегрирован в дерево Linux 2.6 (каталогом был бы linux/sound/pci).

 

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

Драйверы с исходниками в одном файле

1.Изменяем alsa-driver/pci/Makefile
 
Предположим, что у вас есть файл xyz.c. Добавляем следующие две строки
 
snd-xyz-objs := xyz.o
obj-$(CONFIG_SND_XYZ) += snd-xyz.o
 

2.Создаём запись в Kconfig
 
Добавляем новую запись Kconfig для драйвера xyz.
 
config SND_XYZ
       tristate "Foobar XYZ"
       depends on SND
       select SND_PCM
       help
         Say Y here to include support for Foobar XYZ soundcard.
 
         To compile this driver as a module, choose M here: the module
         will be called snd-xyz.
 
строка select SND_PCM указывает, что драйвер xyz поддерживает PCM. В дополнение к SND_PCM для команды select поддерживаются следующие компоненты: SND_RAWMIDI, SND_TIMER, SND_HWDEP, SND_MPU401_UART, SND_OPL3_LIB, SND_OPL4_LIB, SND_VX_LIB, SND_AC97_CODEC. Добавьте команду select для каждого поддерживаемого компонента.
 
Заметим, что некоторые варианты выбора подразумевают низкоуровневые выборы вариантов. Например, PCM включает TIMER, MPU401_UART включает RAWMIDI, AC97_CODEC включает PCM, а OPL3_LIB включает HWDEP. Однако, вам не требуется указывать выбор низкоуровневых вариантов.
 
Для получения подробной информации о скриптах Kconfig, обратитесь к документации по kbuild.
 

3.Запускаем скрипт cvscompile для повторной генерации скрипта конфигурации и собираем всё необходимое ещё раз.

Драйверы с исходниками в нескольких файлах

Предположим, что драйвер snd-xyz имеет несколько исходных файлов. Они расположены в новом каталоге, pci/xyz.

 

1.Добавляем новый каталог (xyz) в alsa-driver/pci/Makefile, как показано ниже
 
obj-$(CONFIG_SND) += xyz/

 

2.В каталоге xyz создаём Makefile
 
Пример 15.1. Пример Makefile для драйвера xyz
 
ifndef SND_TOPDIR
SND_TOPDIR=../..
endif
 
include $(SND_TOPDIR)/toplevel.config
include $(SND_TOPDIR)/Makefile.conf
 
snd-xyz-objs := xyz.o abc.o def.o
 
obj-$(CONFIG_SND_XYZ) += snd-xyz.o
 
include $(SND_TOPDIR)/Rules.make
 

3.Создаём запись KConfig
 
Эта процедура такая же, как и в предыдущем разделе.

 

4.Запускаем скрипт cvscompile для повторной генерации скрипта конфигурации и собираем всё необходимое ещё раз.

 

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