如何编写ALSA(高级Linux声音体系结构)驱动程序?比如PCI声卡。在其他设备类型的情况下,API也可能有所不同。然而,至少ALSA内核API是一致的。对开发者而言需要具备足够的C语言技能和基本的linux内核编程知识。什么时在ALSA上编写PCI声音驱动程序的标准方法?
ALSA驱动程序的文件树结构:
core目录
这个目录包含中间层,它是ALSA驱动程序的核心。在该目录中,存储了本机ALSA模块。子目录包含不同的模块,并且依赖于内核配置。
core/oss
PCM和mixer OSS仿真模块的代码存储在此目录中。rawmidi OSS仿真包含在ALSA-rawmidi代码中,因为它很小。定序器代码存储在core/seq/oss目录中。
core/seq
此目录及其子目录用于ALSA定序器。此目录包含序列发生器内核和主序列发生器模块,如snd-seq-midi、snd-seq-virmidi等。只有在内核配置中设置CONFIG_snd_sequencer时,才会编译它们。
core/seq/oss
其中包含OSS定序器仿真代码。
include目录
这是ALSA驱动程序的公共头文件的位置,这些头文件将导出到用户空间,或者由不同目录下的多个文件包含。基本上,私有头文件不应该放在这个目录中,但由于历史原因,仍然可以在那里找到文件。
drivers目录
此目录包含在不同体系结构上的不同驱动程序之间共享的代码。因此,它们不应该是特定于体系结构的。