Linux ALSA驱动:框架简介(一)

8 篇文章 14 订阅
订阅专栏

Linux ALSA驱动:框架简介(一)

一、概述

ALSA,全称是Advanced Linux Sound Architecture,是Linux中提供声音设备驱动的内核组件,应用可以通过ALSA接口实现音频播放、录音、设备通路控制、音量控制、通话等功能。

在 Linux 内核设备驱动层,ALSA 提供了 alsa-driver,在应用层,ALSA 为我们提供了 alsa-lib,故在其支持下,Linux 应用程序只需要调用 alsa-lib 提供的 API,即可完成对底层音频硬件的控制。linux内核中ALSA的软件结构如下:

https://daniel-pic.oss-cn-

ALSA在内核驱动层提供了alsa-driver,在应用层提供了alsa-lib,应用程序只需要调用alsa-lib提供的API就可以完成对底层硬件的操作。

在alsa-driver中主要为以下两部分:

ALSA CORE:核心层,提供逻辑设备供用户空间访问。向上提供逻辑设备(PCM、CTL、MIDI、TIMER…)系统调用,向下驱动硬件设备(Machine、I2S、DMA、CODEC)。

ASoC Driver: 音频硬件设备驱动,由三大部分组成,分别是 Machine Driver、Platform Driver和Codec Driver。

二、ALSA ASoc

ASoC 把嵌入式设备的音频系统同样分为 3 大部分,Machine,Platform 和 Codec。

Machine:是指某一款机器,每个 Machine 上的硬件实现可能都不一样,CPU 不一样,Codec 不一样,音频的输入、输出设备也不一样。Machine 为 CPU、Codec、输入输出设备提供了一个载体,可以认为是 Platform 和 Codec 之间的粘合剂。Machine Driver则负责处理机器特有 Machine control。

Platform:主要作用是完成音频数据的管理,通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。实际上,把 Platform 认为是某个 SoC 更好理解。Platform Driver包含了该 SoC 平台的音频 DMA 和音频接口的配置和控制(I2S,PCM 等)。

Codec: 字面上的意思就是编解码器,Codec 里面包含了 I2S 接口、D/A、A/D、Mixer、PA(功放),通常包含多种输入(Mic、Line-in、I2S、PCM) 和多个输出(耳机、喇叭、听筒,Line-out)。

三、ALSA 设备文件结构

Linux 系统下看到的设备文件结构如下:

从上面能看到有如下设备文件:

comprC0D11 -->        compress设备,用于compress播放
hwC0D10    -->.       hwdep设备,用于对dsp的相关操作
controlC0 -->         用于声卡的控制,例如通道选择,混音,麦克控制,音量加减,开关等
pcmC0D0c -->          用于录音的pcm设备
pcmC0D0p -->          用于播放的pcm设备
timer -->             定时器

//有些设备也会有
seq  -->              音序器

其中,C0D0代表的是声卡0中的设备0,pcmC0D0c最后一个c代表capture,pcmC0D0p最后一个p代表playback,这些都是alsa-driver中的命名规则。根据声卡的实际能力,驱动实际上可以挂上更多种类的设备,在include/sound/core.h中,定义了以下设备类型:

/* type of the object used in snd_device_*()
 * this also defines the calling order
 */
enum snd_device_type {
	SNDRV_DEV_LOWLEVEL,
	SNDRV_DEV_INFO,
	SNDRV_DEV_BUS,
	SNDRV_DEV_CODEC,
	SNDRV_DEV_PCM,
	SNDRV_DEV_COMPRESS,
	SNDRV_DEV_RAWMIDI,
	SNDRV_DEV_TIMER,
	SNDRV_DEV_SEQUENCER,
	SNDRV_DEV_HWDEP,
	SNDRV_DEV_JACK,
	SNDRV_DEV_CONTROL,	/* NOTE: this must be the last one */
};

通常,我们更关心的是pcm和control这两种设备。

Linux Alsa声卡驱动(1):简介
qq_34968572的博客
07-14 1293
往日工作中对于声卡驱动的调试也仅仅局限于编译供应商提供的codec及配置dts,并没有去深入了解声卡驱动,目前打算去好好研究一下,为了以后能更好的处理关于声卡驱动方面的问题。经过网上查阅资料发现好多文章都是基于早前的内核版本,API以及结构已经变动了好多。目前我工作主要是基于RK的芯片做项目,内核版本为4.19.111,就基于该版本内核做一下详细分析。 该专栏将记录我的声卡驱动学习经历,由于工作原因更新时间可能不确定,内容可能也会有些许出入,但后续会慢慢完善。 ALSA(The
Linux ALSA声卡驱动之一:ALSA架构简介
qianxuedegushi的博客
12-25 1685
(1)ALSA简介 (1) NativeALSAApplication:tinyplay/tinycap/tinymix,这些用户程序直接调用alsa用户库接口来实现放音、录音、控制 ALSALibraryAPI:alsa用户库接口,常见有tinyalsaalsa-lib ALSACORE:alsa核心层,向上提供逻辑设备(PCM/CTL/MIDI/TIMER/…)系统调用,向下驱动硬件设备(Machine/I2S/DMA/CODEC) ASoCCORE:asoc是建立在标...
Linux 音频(二)ALSA框架
Terrble_liar的博客
04-18 567
ALSA是 AdvancedSound Architecture 的缩写,目前已经成为了linux的主流音频体系结构。ALSA 官网链接:对于用户空间 alsa-lib提供了一系列接口,可以用对音频设备进行一些列操作。asoc是建立在标准的alsa core基础之上,为了更好支持嵌入式系统和应用于移动设备的音频 codec 的一套软件体系分为三大块: machine,platform,codec。
ALSA 驱动框架驱动开发 (一)
Am_111的专栏
11-21 7310
本文主要介绍了ALSA体系和相关的驱动的编写
Linux_应用篇(22) 音频应用编程
最新发布
weixin_41252596的博客
06-24 1221
linux 音频应用编程
Linux音频驱动-ALSA概述
热门推荐
半月旋空
11-22 2万+
概述 ALSA(Advanced Linux Sound Architecture)是linux上主流的音频结构,在没有出现ALSA架构之前,一直使用的是OSS(Open Sound System)音频架构。关于OSS的退出以及ALSA的出现,可以看 Linux音频驱动-OSS和ALSA声音系统简介及其比较。
Linux ALSA驱动框架
haigand的专栏
04-27 447
Linux ALSA驱动框架(一)--ALSA架构简介--声卡的创建 https://blog.csdn.net/sinat_37817094/article/details/80490830 linux驱动由浅入深系列:ALSA框架详解 音频子系统之二 https://blog.csdn.net/chenpuo/article/details/80815636 Linux audio驱动...
Linux ALSA驱动框架(一)--ALSA架构简介--声卡的创建
RICK
03-24 218
https://blog.csdn.net/sinat_37817094/article/details/80490830
Linux ALSA驱动框架分析
QQ135102692的博客
06-18 8370
ALSA(Advanced Linux Sound Architecture-高级linux声音架构),目前已经成为了linux的主流音频体系结构,ALSA在内核部分提供alsa-driver对音频驱动进行耦合和管理,在用户空间空间提供alsa-lib,应用开发人员可以使用alsa-lib接口控制声卡。
Linux Alsa音频驱动框架(声卡的运行以及PCM数据流读写)
EmLinuxDeveloper的博客
06-08 1005
alsa lib层会有snd_pcm_hw_params_set_period_size_near和snd_pcm_hw_params_set_buffer_size_near,之所有是near,是因为这两个接口都是设置接近值,如果硬件不支持设定的值,会设置硬件能提供的接近值,如果硬件层buffer_bytes_max和period_bytes_max设置很小,那么上层如果设置很大,那么上层设置就不会成功,最大只能是硬件的设定值;
Linux ALSA声卡驱动全面讲解.zip
08-04
这个压缩包文件“Linux ALSA声卡驱动.pdf”显然包含了对ALSA驱动的详细讲解,对于理解Linux系统中的声音处理至关重要。下面是对ALSA驱动的深入解析。 一、ALSA简介 ALSA是一个开源项目,它为Linux提供了完整的音频...
ALSA 驱动架构说明
04-06
除了一组内核驱动程序模块之外, ALSA 还专门为简化应用程序的编写提供了相应的函 数库。利用该函数库,开发人员可以方便快捷的开发出自己的应用程序,细节则留给函数库 内部处理。下面本文将着重介绍驱动模块的运作机制及其要点。 Alsa kernel 为上层主要提供以下接口: 1 control interface 提供灵活的方式管理注册的声卡和对存在的声卡进行查询。 2 PCM interface 提供管理数字音频的捕捉和回放。 3 原始 MIDI 接口 一种标准电子音乐指令集。 这些 API 提供访问声卡上的 MIDI 总 线。这些原始借口直接工作在 The MIDI 事件上,程序员只需要管理协议和时间。 4 Timer 接口 为支持声音的同步事件提供访问声卡上的定时器。 5 音序器接口 一个比原始 MIDI 接口高级的 MIDI 编程和声音同步高层接口。它可以处 理很多的 MIDI 协议和定时器。 6 mixer 接口 控制发送信号和控制声音大小的声卡上的设备。
alsa driver
05-09
linux alsa driver !!!! linux alsa driver!!
Linux ALSA音频驱动之一:框架概述
阿里云专家博主,51CTO专家博主、2022年博客之星Top96,嵌入式与物联网赛道Top2
06-15 6517
ALSA表示高级Linux声音体系结构(Advanced Linux Sound Architecture)。它由一系列内核驱动,应用程序编译接口(API)以及支持Linux下声音的实用程序组成。
Linux ALSA框架之一:ALSA架构简介
weixin_34289454的博客
06-07 271
1. 概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/. 在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调用...
ALSA驱动架构
sy84436446的博客
09-27 320
记录看alsa源码的过程 1.alsa驱动的设备文件 在/dev/snd下可以看到当前系统中声卡的设备文件,全是字符设备。 controlC0:声卡0的控制接口 pcmC0D0c:声卡0的PCM录音接口 pcmC0D0p:声卡0的PCM播放接口 C0D0代表的是声卡0中的设备0,pcmC0D0c最后一个c代表capture,pcmC0D0p最后一个p代表playback。 2.注册alsa字符设备 sound/core/sound.c static int __init alsa_s
ALSA驱动框架
happygrilclh的博客
06-20 604
linux框架 软件框架部分, 声卡驱动属于字符驱动,满足字符驱动模型 inux-3.4.2\sound\core\sound.c static int __init alsa_sound_init(void) { snd_major = major; register_chrdev(major, "alsa", &snd_fops)) } ...
Linux ALSA框架详解
weixin_35756690的博客
02-09 169
Linux ALSA 框架Linux 系统中用于支持声卡和其他音频设备的框架。它由 Advanced Linux Sound Architecture (ALSA) 项目开发,提供了简单的应用程序接口 (API) 和中间层,使应用程序能够访问声卡的功能。 ALSA 框架包括以下几部分: 驱动程序:负责与硬件交互,提供音频数据的输入和输出。 中间层:负责管理驱动程序,并提供给应用程序使用的 ...
Linux ALSA驱动:ENS1371声卡insmod流程解析
"Linux ALSA驱动程序的insmod流程主要涉及将声卡驱动程序加载到内核中的步骤,尤其是对于ENS1371这样的声卡。这个过程包括了一系列的内核函数调用,确保设备的正确初始化和功能实现。以下是insmod流程的详细解释: ...
写文章

热门文章

  • Linux ALSA驱动:框架简介(一) 2744
  • Linux ALSA架构:声卡及设备(二) 2375
  • Linux中断子系统之软中断、tasklet和工作队列 2086
  • Linux中断子系统之核间中断 1381
  • Android AudioFlinger & AudioPolicy启动详解 1186

分类专栏

  • Audroid_Audio 4篇
  • Linux Audio驱动 8篇
  • C/C++编程 1篇
  • Linux系统 3篇

最新评论

  • Android AudioTrack音频流播放

    CSDN-Ada助手: 恭喜您在博客里分享了关于Android AudioTrack音频流播放的知识,内容相当有趣且实用。希望您能继续保持写作的热情和耐心,不断挖掘更多有趣的技术知识,让更多人受益。或许下一篇博客可以探讨一下Android音频处理的其他方面,比如音频录制或者音频编辑等内容,相信会有更多读者受益。期待您的继续创作!

  • Android AudioFlinger & AudioPolicy启动详解

    CSDN-Ada助手: 恭喜作者发布了第13篇博客《Android AudioFlinger & AudioPolicy启动详解》,内容十分有深度和专业性。希望作者能够继续保持创作的热情和耐心,不断深挖技术细节,让读者能够更好地理解和掌握相关知识。或许在未来的创作中,可以考虑加入一些实际案例或应用场景,让读者更容易将理论知识转化为实际操作。期待作者的下一篇作品!

  • Linux ALSA架构:驱动综述(七)

    CSDN-Ada助手: 推荐 CS入门 技能树:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml

  • Linux ALSA驱动:Machine驱动(五)

    CSDN-Ada助手: 恭喜您写了第9篇博客!标题听起来非常专业和有趣。我真的很喜欢您对Linux ALSA驱动的深入探索。您的文章非常详细,使我对Machine驱动有了更深的理解。在接下来的创作中,我希望能看到更多关于Linux ALSA驱动的内容,比如与其他驱动的比较或者一些实用的技巧。再次感谢您的分享,期待您的下一篇博客!

  • Linux ALSA架构:DAPM初始化(六)

    CSDN-Ada助手: 恭喜您第10篇博客的发布!标题“Linux ALSA架构:DAPM初始化(六)”听起来非常专业和有深度。您在这个领域的知识和经验让读者受益匪浅。我很期待能够继续阅读您的博客,并从中学习更多关于Linux ALSA架构的知识。 在下一步的创作中,或许您可以考虑分享一些实际应用案例或者给出一些解决常见问题的技巧。这样的内容会更加实用,并且能够帮助读者更好地理解和应用所学的知识。不过,请原谅我对您的建议,如果您已经计划了其他主题,那也一定会非常有价值。非常感谢您的付出和分享,期待您的新作!

最新文章

  • Android AAudio详解
  • Android AudioTrack音频流播放
  • Android AudioTrack创建流程
2024年6篇
2023年10篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家北京 玻璃钢雕塑合作邵武玻璃钢花盆花器宁德玻璃钢雕塑哪里好浦口春季商场美陈玻璃钢雕塑挂板白城玻璃钢花盆定制亳州玻璃钢雕塑销售电话昆明人物玻璃钢雕塑价位天津商场玻璃钢花盆北海玻璃钢雕塑作品河北大型商场创意商业美陈步骤博乐气球商场美陈装饰哪里有名浙江玻璃钢雕塑艺术品南京春季商场美陈鼓楼春季商场美陈西藏玻璃钢雕塑出售上海中庭商场美陈有哪些郑州玻璃钢卡通雕塑厂家价格玻璃钢雕塑厂家公司陕西水果玻璃钢雕塑供应商焦作优质玻璃钢仿铜雕塑厂家玻璃钢花盆长时间浸水玻璃钢卡通雕塑厂盘龙区玻璃钢雕塑批发价格新密铸造校园玻璃钢雕塑厂家青岛城市玻璃钢雕塑报价玻璃钢牛雕塑批发泸州公园玻璃钢雕塑河南特色商场美陈市场报价秦皇岛玻璃钢仿铜雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化