首页
学习
活动
专区
圈层
工具
发布
37 篇文章
1
Linux音频驱动-ASOC(ALSA System on Chip)
2
LPDDR5: A New Clocking Scheme 提高性能
3
FPGA 控制 RGMII 接口 PHY芯片基础
4
DDR3篇第三讲、DDR3读写测试项目分析
5
PHY(Physical Layer,PHY)通俗理
6
MIPI联盟已完成车载的Long-Reach SerDes PHY工业标准 A-PHY v1.0
7
【三】Bluetooth 技术||链路层七种状态与空口报文设计(Core_v5.2)
8
【RL-TCPnet网络教程】第5章 PHY芯片和STM32的MAC基础知识
9
FPGA和USB3.0通信-USB3.0 PHY介绍
10
USB技术浅析
11
优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V
12
优秀的 Verilog/FPGA开源项目介绍(十六)- 数字频率合成器DDS
13
想学习高速ADC/DAC/SDR项目这个项目你不得不理解
14
优秀的 Verilog/FPGA开源项目介绍(九)- DP(增改版)
15
优秀的 Verilog/FPGA开源项目介绍(十三)- I2C
16
高速串行通信常用的编码方式-8b/10b编码/解码
17
SoC设计之PPA
18
SoC设计之功耗--开篇
19
开源SOC的设计与实践
20
SoC设计之功耗 – RTL/netlist功耗计算
21
转置型FIR设计
22
SSD目标检测系统系统结构网络训练
23
P2P接口Booth乘法器设计描述原理代码实现
24
流水线式p2p接口的分析与实现
25
流水线乘加树需求设计规划代码实现
26
分时复用的移位相加乘法器
27
Verilog实现全并行比较算法
28
全并行流水线移位相加乘法器
29
ROM乘法器基本算法单个ROM乘法器分时复用ROM乘法器
30
Flash中XIP模式
31
cordic的FPGA实现(五)、除法实现
32
cordic的FPGA实现(三)、乘法器实现
33
cordic的FPGA实现(三)、sin、cos函数运算与源码分析
34
FPGA卡拉ok系统--Biquad filter
35
音频总线I2S协议
36
脉冲压缩处理
37
虚拟地址(VA,virtual address)到物理地址(PA, ,physical address)的转换
清单首页SoC文章详情

Linux音频驱动-ASOC(ALSA System on Chip)

概述

此处还需引入之前说过的话: 新事物的出现必然是为了解决旧事物中的不足。这句话在现实生活中和程序世界中道理一样。ASOC的出现就是为了解决ALSA无法解决的问题。ALSA到底存在什么问题? 以及ASOC会以怎样的方式去解决ALSA存在的问题?

详细参考内核文档: kernel\documentation\sound\alsa\soc\Overview.txt

ALSA存在的问题:

1. Codec驱动与SOC中断CPU耦合严重,这将导致代码重复,一个Codec驱动每个cpu上会出现不同的版本。

2. 当音频事件发生时(插拔耳机,音箱)没有标准的方法通知用户,尤其在移动端此事件非常常见。

3. 当播放/录制音频时,驱动会让整个codec处于上电状态,这样会在移动端非常浪费电量。同时也不支持改变采样频率/骗置电流来节约功耗。

针对以上问题,提出了ASOC(ALSA System on Chip)来力争解决上述问题。解决方法如下:

1. Codec代码独立,不再耦合与CPU,这样可以增加Codec代码重复利用。

2. 在Codec和Soc之间通过简单的I2S/PCM音频接口通信,这样SOC和Codec只需要注册自己相关的接口到ASOC code即可。

3. 动态的电源管理(Dynamic Audio Power Management)DAPM。DAPM始终将Codec自动设置在最低功耗状态运行。

4. 消除pop音。控制各个widget上下电的顺序消除pop音。

5. 添加平台相关的控制,运行平台添加控制设备到声卡。

ASOC音频架构

为了实现上述的新feature,ASOC将嵌入式音频系统分为三大类可重复使用的驱动程序: Platform, Machine, Codec。

Codec类: Codec即编解码芯片的驱动,此Codec驱动是和平台无关,包含的功能有: 音频的控制接口,音频读写IO接口,以及DAPM的定义等。如果需要的话,此Codec类可以在BT,FM,MODEM模块中不做修改的使用。因此Codec就是一个可重复使用的模块,同一个Codec在不同的SOC中可以使用。

Platform类: 可以理解为某款SOC平台,平台驱动中包括音频DMA引擎驱动,数字接口驱动(I2S, AC97, PCM)以及该平台相关的任何音频DSP驱动。同样此Platform也可以重用,在不同的Machine中可以直接重复使用。

Machine类: Machine可以理解为是一个桥梁,用于在Codec和Platform之间建立联系。此Machine指定了该机器使用那个Platform,那个Codec,最终会通过Machine建立两者之间的联系。

在软件上可以抽象如下图:

ASOC数据结构

在分析整个ASOC的过程中,出现了众多的数据结构,在此先理清重要的数据结构的关系。如下图:

可以看到Machine是连接Codec和Platform之间的桥梁,因此首先要分析Machine部分,在下节分析Machine部分。

下一篇
举报
领券