Linux ALSA 驱动模型

目录

  • Linux ALSA 驱动模型
  • 一、音频相关知识
  • 二、Linux下的音频驱动架构

一、音频相关知识

声音是连续的模拟信号,音频设备是将模拟信号和数字信号进行转换的设备。转转的原理就是通过离散的时间对信号进行量化,以对模拟信号进行准确的模拟。
音频通常包括输入和输出,它们可以同时进行。有关音频的指标参数如下。

采样频率:单位时间内的采样次数。采样频率越高,采样点之间的时间间隔就越短,数字量化后的声音就越逼近模拟信号。声音的采样频率用kHz(千赫兹)来度量。

量化位数:即采样位数,就是模拟量转换成数字量后的数据位数。它有8位和16位两种。位数越多,声音越细腻。

声道数量:指单声道或者是立体声(即左右声道)

二、Linux下的音频驱动架构

Linux内核目前采用 ALSA(Advanced Linux Sound Architecture) 架构,目前已经成为linux的主流音频体系结构。

该架构不经包括驱动部分,而且还包括了应用部分。应用库对驱动提供的服务进行封装,避免应用对ioctl频繁的调用,容易理解和使用。

ASLALinux高级声音架构,它在Linux系统上提供了音频和MIDI(音乐设备数字化接口)的支持,它包含API库和工具,内核驱动集合,ALSA包含一系列的内核驱动集合对声音的支持,还提供了libasound的API库支持。用做这些写应用程序不需要打开设备操作,完全不用关注底层。

ALSA自带的应用程序是alsa-utils工具包,包括aplay、alsamixre等。Aplay用于在ALSA上播放音频,alsamixer用于改变音频音量。

Alsa-lib是用户空间的函数库,提供lib asound.so给应用程序使用。应用程序包含头文件asoundlib.h。这个库提供封装函数(ALSA-API)使应用程序编写更容易。

Alsa-lib中的control、 timer、 dmix 等都是以插件(plugin)存在,alsa-lib通过硬件访问层的系统调用与内核交互。

Alsa-driver是音频设备的alsa内核部分的驱动,集成到内核中,多数以模块存在。它分三层:

1、 硬件控制层,访问和操作硬件
2、 中间层是LASA驱动的核心部分,由各种功能的驱动设备组成,为用户提供硬件组件,如PCM、AC97、音序器和控制器等。用户也可以自行定义设备组件。
3、 驱动最上层是声卡对象描述层,是声卡硬件的抽象描述,内核通过这些描述可得知声卡的功能,设备组件以及操作方法等。

以下是ALSA驱动架构图:

Linux下ALSA驱动分析相关推荐

  1. linux 网卡驱动分析,基于linux下网卡驱动分析及实现技术研究

    摘    要 Linux技术是当前计算机技术中最大的一个热点,在我国以及全世界得到了迅猛的发展,被广泛的应用于嵌入式系统.服务器.网络系统.安全等领域.从而使得掌握在 Linux环境下的开发技术,成为 ...

  2. linux下camera驱动分析_LINUX设备驱动模型分析之三 驱动模块相关(DRIVER)接口分析...

    本系列前几篇文章链接如下: <LINUX设备驱动模型分析之一 总体概念说明> <LINUX设备驱动模型分析之二 总线(BUS)接口分析> 上一章我们分析了bus-driver- ...

  3. Linux下spi驱动分析与测试【详细流程】

    驱动是基于ARM的pl022的SSP控制器,其支持三种通信格式:SPI.SSI以及Microwrite,llinux5.4内核下,SSP控制器驱动的路径为/drivers/spi/spi-pl022. ...

  4. linux下camera驱动分析_《Linux设备驱动程序》(五)——字符设备驱动(下)

    上一节介绍了字符驱动中的一些概念,这一节我们将会基于系统内存编写一个字符设备驱动,加深对上一节中的概念的理解. 本节主要学会的内容: 字符设备注册 对设备节点进行cat和echo操作 驱动设计 编写驱 ...

  5. linux spi驱动分析 三,Linux下SPI驱动分析

    /* 神奇的分割线 */ 626/*-------------------------------------------------------------------------*/ 627 62 ...

  6. 【驱动】linux下I2C驱动架构全面分析

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  7. linux下I2C驱动发送IO时序,I2C驱动情景分析——怎样控制I2C时序

    内核版本:linux-3.4.2 源程序:    linux-3.4.2\drivers\i2c\busses\I2c-s3c2410.c 这次要解决的问题是:如何配置soc的I2C模块,输出想要的时 ...

  8. linux下I2C驱动架构全面分析

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  9. linux下IIC驱动开发分析

    1.  IIC规范 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频和 ...

  10. Linux下触摸屏驱动程序分析

    [摘要: 本文以 linux 3.5--Exynos4412仄台,剖析 触摸屏 驱动焦点内容.Linux下触摸屏驱动(以ft5x06_ts为例)须要懂得以下学问: 1. I2C协定 2. Exynos ...

最新文章

  1. python多维数组筛选
  2. linux打开vivado_ubuntu启动vivado UBUNTU 16.04安装VIVADO成功启动SDK - Linux - 服务器之家...
  3. 【HYSBZ - 1088 】扫雷Mine (简单dp)
  4. 阿里云HBase增强版全文索引功能技术解析
  5. [转]解决IE下CSS背景图片闪烁的Bug
  6. 奥林匹克公园的《老北京四重奏》
  7. 团队冲刺第一阶段第五天
  8. 如何将android连接到pc,如何将Android屏幕镜像到PC
  9. 第3章 系统设计和架构设计【扩胸运动,有容乃大】
  10. 【计算机网络】实验报告三:Cisco Packet Tracer 实验
  11. 开源硬件童芯派了解一下?一个真创客聊聊开源硬件
  12. update select 语句和merge into语句
  13. 全网惟一面向软件测试人员的Python基础教程-在Python中怎么干倒字符串?
  14. 6-1 jmu-python-组合数据类型-1.计算坐标点欧氏距离 (10 分)
  15. 全栈工程师真的全栈吗?
  16. html 中的 css 的强制换行与不换行文本
  17. SCHURTER概况以及产品应用(一)+代理商渠道
  18. 【NetTopologySuite类库】NTS与JTS一些问题整理
  19. 成交量分布图识别阻力支撑区域构建交易策略
  20. 140.深度学习分布式计算框架-3

热门文章

  1. 连接ftp服务器教程
  2. 如何扒微信小程序源码
  3. PADS PCB绘图软件使用过程中遇到的问题和填坑
  4. php ksc歌词,KSC字幕制作方法 KSC歌词编辑教程
  5. STM32-CAN通信协议
  6. 【axure教程】产品流程图的制作方法详解
  7. cximage函数总结
  8. RDPWrap,win10家庭版最新配置文件支持termsrv10.0.18362.836
  9. 记录:zlog交叉编译出aarch64的libzlog.a
  10. ArcGis 拓扑检查——缺顶点、悬挂检查代码 C#