Linux的声卡驱动中ALSA与OSS的区别和简单流程介

Advanced Linux Sound Architecture 的简称为 ALSA,译成中文的意思是 Linux 高级声音体系,ALSA不仅仅是包括对声卡的支持和驱动;

它的特征如下:

1、对所有音频接口的高效支持,从普通用户的声卡到专业级别多路音频设备;

2、声卡驱动完全模块化设计;

3、SMP and thread-safe design.

4、开发库(alsa-lib) 为程序设计提供了简单、方便,并且拥有有高级的效果和功能;

如何查看硬件芯片;

  在Linux操作系统中,所有的硬件都是以芯片组来区分的,品牌并不是最重要的;硬件最重要的标识是芯片组;所以您在讨论区求助的时候,只说硬件品牌,而不提供芯片组,大家是帮助不了您的,切记;

  我们查看硬件的芯片组是的命令是 lspci -v 或者是dmesg,由于dmesg输出的信息不太多,不够直观;所以经常用的还是lspci -v ;也可以用lshal 获取;最方便的还是lspci -v;初学者还是用 lspci -v 更好一点;

  代码:

  [root@localhost beinan]# lspci -v

  我们运行lspci -v 后,如果查看声卡芯片组,发会现有类似下面的一段;

    [root@localhost beinan]# lspci -v

Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)

AC'97 Audio Controller (rev 03)

Subsystem: Hewlett-Packard Company: Unknown device 3080

  2.6.11-1.1369_FC4 i686 i686 i386

  上面的表示的是系统的内核版本,处理器架构等;lsmod 查看已经加载的内核模块;

如果一个设备在内核的编译中是以模块方式加载的,主要是通过lsmod 来查看;

  [root@localhost beinan]# lsmod

  可能初学Linux的弟兄会问,内核的module存放在哪里,我们能不能自己来手工加载模块;内核的模块放在 /lib/modules/内核的版本/kernel/ ,比如在Fedora 4.0 中,我们可以看到如下的:

  [root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/kernel/

  arch/  crypto/ drivers/ fs/   lib/   net/   sound/其中,sound 就是声卡模块存放目录,大多数的硬件驱动放在 drivers目录,fs 是文件系统模块的目录;net是与网络有关的存放目录,比如一些网络协议支持的模块、防火墙支持的模块等;arch 是cpu方面 ... ...

  如果我们想自己加载模块,就到这些目录中查看相应模块的信息,然后用 modprobe 来加载;

  [root@localhost beinan]# modinfo snd-intel8x0

  查看一个模块的信息,我们用 modinfo 来查看,所要查看的模块不要带 .ko 或者.o 之类的;比如查看到类似下面的信息;

  description: Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7012; Ali 5455

  通过这个我们足可以知道这是Intel 集成声卡,通过lspci -v 得到的声卡信息,感觉他们很相近;所以就能尝试用这个模块来驱动;

  [root@localhost beinan]# modprobe snd-intel8x0

  用 modprobe 加载了模块,然后我们通过 lsmod 就能看到了;对于声卡模块是这么加载的,其它设备的驱动模块也是如此。

 

 

转自:http://www.linuxidc.com/Linux/2009-08/21171p2.htm

 

你可能感兴趣的:(linux)