狼君个个很凶猛丹鸟菩提的小说百度云云

Linux的声卡驱动中ALSA与OSS的区别和简单流程介
第2页_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Linux的声卡驱动中ALSA与OSS的区别和简单流程介
来源:.cn/zhaoke7891&
作者:Flying
  如果一个设备在内核的编译中是以模块方式加载的,主要是通过lsmod 来查看;
  [root@localhost beinan]# lsmod
  可能初学Linux的弟兄会问,内核的module存放在哪里,我们能不能自己来手工加载模块;内核的模块放在 /lib/modules/内核的版本/kernel/ ,比如在 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 就能看到了;对于声卡模块是这么加载的,其它设备的驱动模块也是如此。2
相关资讯 & & &
& (08/29/:03)
& (02/14/:54)
& (02/14/:27)
& (02/15/:56)
& (02/14/:59)
& (11/02/:25)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款91147人阅读
Linux音频子系统(14)
声明:本博内容均由原创,转载请注明出处,谢谢!
&&&&ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:。
&&& 在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调用alsa-lib提供的API,即可以完成对底层音频硬件的控制。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图 1.1&& alsa的软件体系结构
由图1.1可以看出,用户空间的alsa-lib对应用程序提供统一的API接口,这样可以隐藏了驱动层的实现细节,简化了应用程序的实现难度。内核空间中,alsa-soc其实是对alsa-driver的进一步封装,他针对嵌入式设备提供了一些列增强的功能。本系列博文仅对嵌入式系统中的alsa-driver和alsa-soc进行讨论。
&二.& ALSA设备文件结构
&&& 我们从alsa在linux中的设备文件结构开始我们的alsa之旅. 看看我的电脑中的alsa驱动的设备文件结构:
cd /dev/snd
crw-rw----+ 1 root audio 116, 8
21:38 controlC0
crw-rw----+ 1 root audio 116, 4
21:38 midiC0D0
crw-rw----+ 1 root audio 116, 7
21:39 pcmC0D0c
crw-rw----+ 1 root audio 116, 6
21:56 pcmC0D0p
crw-rw----+ 1 root audio 116, 5
21:38 pcmC0D1p
crw-rw----+ 1 root audio 116, 3
crw-rw----+ 1 root audio 116, 2
21:38 timer
&&& 我们可以看到以下设备文件:
controlC0 --&&&&&&&&&&&&&&&&& 用于声卡的控制,例如通道选择,混音,麦克风的控制等midiC0D0& --&&&&&&&&&&&&&&&&&用于播放midi音频pcmC0D0c --〉&&&&&&&&&&&&&& 用于录音的pcm设备pcmC0D0p --〉&&&&&&&&&&&&&& 用于播放的pcm设备seq& --〉&&&&&&&&&&&&&&&&&&&&&&& 音序器timer --〉&&&&&&&&&&&&&&&&&&&&&& 定时器
其中,C0D0代表的是声卡0中的设备0,pcmC0D0c最后一个c代表capture,pcmC0D0p最后一个p代表playback,这些都是alsa-driver中的命名规则。从上面的列表可以看出,我的声卡下挂了6个设备,根据声卡的实际能力,驱动实际上可以挂上更多种类的设备,在include/sound/core.h中,定义了以下设备类型:
#define SNDRV_DEV_TOPLEVEL ((__force snd_device_type_t) 0)
#define SNDRV_DEV_CONTROL ((__force snd_device_type_t) 1)
#define SNDRV_DEV_LOWLEVEL_PRE ((__force snd_device_type_t) 2)
#define SNDRV_DEV_LOWLEVEL_NORMAL ((__force snd_device_type_t) 0x1000)
#define SNDRV_DEV_PCM
((__force snd_device_type_t) 0x1001)
#define SNDRV_DEV_RAWMIDI ((__force snd_device_type_t) 0x1002)
#define SNDRV_DEV_TIMER
((__force snd_device_type_t) 0x1003)
#define SNDRV_DEV_SEQUENCER ((__force snd_device_type_t) 0x1004)
#define SNDRV_DEV_HWDEP
((__force snd_device_type_t) 0x1005)
#define SNDRV_DEV_INFO
((__force snd_device_type_t) 0x1006)
#define SNDRV_DEV_BUS
((__force snd_device_type_t) 0x1007)
#define SNDRV_DEV_CODEC
((__force snd_device_type_t) 0x1008)
#define SNDRV_DEV_JACK
((__force snd_device_type_t) 0x1009)
#define SNDRV_DEV_LOWLEVEL ((__force snd_device_type_t) 0x2000)
&通常,我们更关心的是pcm和control这两种设备。
三.& 驱动的代码文件结构
&&& 在Linux2.6代码树中,Alsa的代码文件结构如下:
&&& &&& &&& /core
&&&&&&&& &&& &&&&&&& /oss
&&&&&&&&&&&&&&&& && /seq
&&&&&&&&&&& /ioctl32
&&& &&& &&& /include
&&&&&&& &&& /drivers
&&& &&&&&&& /i2c
&&& &&& &&& /synth
&&&&&&&&&&& &&&&&&& /emux
&&& &&&&&&& /pci
&&&&&&&&&&& &&&&&&& /(cards)
&&& &&&&&&& /isa
&&&&&&&&&&& &&&&&&& /(cards)
&&& &&& &&& /arm
&&& &&&&&&& /ppc
&&&&&&& &&& /sparc
&&&&&&&&&&& /usb
&&& &&& &&& /pcmcia /(cards)
&&&&&&& &&& /oss
&&& &&&&&&& /soc
&&&&&&& &&&&&&&&&&& /codecs
core&&&&&&&&&&&&&& 该目录包含了ALSA驱动的中间层,它是整个ALSA驱动的核心部分 core/oss&&&&&&& 包含模拟旧的OSS架构的PCM和Mixer模块 core/seq&&&&&&& 有关音序器相关的代码 include&&&&&&&&& ALSA驱动的公共头文件目录,该目录的头文件需要导出给用户空间的应用程序使用,通常,驱动模块私有的头文件不应放置在这里 &drivers&&&&&&&& & 放置一些与CPU、BUS架构无关的公用代码 i2c&&&&&&&&&&&&&&&& ALSA自己的I2C控制代码 pci&&&&&&&&&&&&&&&& pci声卡的顶层目录,子目录包含各种pci声卡的代码 isa&&&&&&&&&&&&&&&& isa声卡的顶层目录,子目录包含各种isa声卡的代码 soc&&&&&&&&&&&&&&& 针对system-on-chip体系的中间层代码 soc/codecs&&& 针对soc体系的各种codec的代码,与平台无关
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1297340次
积分:9642
积分:9642
排名:第1683名
原创:51篇
评论:556条
(1)(4)(4)(3)(3)(4)(4)(4)(1)(5)(2)(2)(1)(1)(2)(1)(1)(2)(3)(5)(1)(1)温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(4389)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_083074',
blogTitle:'Ubuntu下声卡驱动解决方法alsa',
blogAbstract:'一、首先介绍一下什么是ALSA ;\r\n\r\nAdvanced Linux Sound Architecture 的简称为 ALSA ,译成中文的意思是先进的Linux声音架构(这是google翻译的);一谈到架构就有点范围太大了,所以ALSA不仅仅是包括对声卡的支持和驱动;\r\n\r\nALSA具有如下特征:\r\n\r\n1、对所有音频接口的高效支持,从普通用户的声卡到专业级别多路音频设备;\r\n\r\n2、声卡驱动完全模块化设计;\r\n\r\n3、SMP and thread-safe design.\r\n\r\n4、开发库(alsa-lib) 为程序设计提供了简单、方便,并且拥有有高级的效果和功能;\r\n\r\n5、支持旧版本的OSS API\r\n结口,能为大多数的OSS应用程序提供兼容;OSS是一个商业性的驱动,',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 丹鸟菩提的小说百度云 的文章

 

随机推荐