Linux ALSA 系统架构
来源:互联网 发布:ubuntu怎么安装qq2017 编辑:程序博客网 时间:2024/05/18 00:19
如上图所示,alsa驱动最终会被上层应用调用,这是通过alsa-lib实现的,alsa-lib为alsa-driver封装了许多API,通过这些API,上层应用可以调用到驱动层。而alsa-lib中的这些API,我们可暂时把他们当做一个黑盒子,里面具体实现不需要去关注,下面以linux-2.6.32中ALSA调用函数关系说明其架构。先分析ALSA驱动的注册过程。
一、ALSA驱动的注册
注册流程查看上图,具体的注册过程不在此赘述。
二、打开流程
在ALSA驱动注册完毕以后,当应用程序开始调用时,会有一个过程:打开设备、映射、设置硬件参数、准备工作、触发数据流。下图为整个流程。
带sep0611的是需要自己实现的底层驱动。
三、写数据流程
图中应用程序通过ALSA-lib的API函数写入数据,ALSA-lib调用等待函数等待底层可写。ALSA-lib通过poll系统调用进入底层驱动并将poll信号加入sleep队列阻塞进程。硬件的中断信号触发底层驱动注册的中断处理函数,中断处理函数进而调用ALSA-driver中的函数判读是否该写。ALSA-driver中的函数再调用底层芯片硬件驱动获取硬件当前数据大小。ALSA-driver再判断空闲数据区的大小,如果满足条件就唤醒sleep队列,poll信号从而被唤醒,进而返回给ALSA-lib,ALSA-lib收到信号后再执行往buffer里写数据。
ALSA-lib通过mmap机制将硬件申请的内存映射到用户空间,从而应用程序只需调用ALSA-lib往相应位置写数据,硬件就可以直接读取了。如果映射内存里已有数据,通过DMA传输给codec,codec便开始读取数据并进行解码播放声音了。经过测试,基于sep6200的ALSA声卡驱动工作正常,既可以播放声音也可以录制。
- Linux ALSA 系统架构
- Linux ALSA 系统架构
- Linux ALSA 系统架构
- Linux ALSA 系统架构
- Linux ALSA 系统架构
- Linux ALSA 系统架构
- Linux ALSA 系统架构
- 分析Linux ALSA系统架构
- 分析Linux ALSA系统架构
- Linux ALSA声卡驱动之一:ALSA系统架构
- Linux ALSA声卡驱动之一:ALSA系统架构
- 分析Linux ALSA系统架构以及Codec简介
- Linux ALSA声卡驱动:ALSA架构简介
- Linux ALSA框架之一:ALSA架构简介
- Linux ALSA框架之一:ALSA架构简介
- Linux ALSA声卡驱动:ALSA架构简介
- Linux声音系统 ALSA OSS
- Linux ALSA声卡驱动之一:ALSA架构简介
- [易飞]服务器防火墙启用易飞端口
- Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
- delphi 7连接oracle数据库问题
- c#之filestream
- Java多线程系列--“JUC集合”01之 框架
- Linux ALSA 系统架构
- scala-wordcount
- maven工程如何配置servlet
- Oracle笔记(三) Scott用户的表结构
- 微信小程序转盘抽奖
- socket 接口测试实例 tcp连接 Python 2.7
- 蓝桥杯:李白打酒
- Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
- 沉浸式管理