🎧 ALSA 驱动开发实战
30章 · 从入门到主线
⭐ 友好色系
01
ALSA架构概览
音频子系统位置 · ALSA vs OSS · 软件分层 · 核心数据结构 snd_card/snd_device/snd_pcm
02
音频硬件基础
数字音频原理 · I2S/PCM/TDM总线 · Codec & DMA · 硬件拓扑
03
开发环境搭建
交叉编译链 · 内核编译 · ALSA模块选项 · QEMU ARM调试
04
snd_card创建与管理
snd_card_new/free · 索引/ID · 注册注销 · 组件管理 snd_device_new
05
PCM设备注册 (上)
snd_pcm_new/free · playback/capture · snd_pcm_hardware定义
06
PCM设备注册 (下)
snd_pcm_ops 实现 · substream 概念与生命周期
07
DMA缓冲区管理
dma_alloc_coherent · 环形缓冲区 · 指针更新 · Xrun处理
08
I2S控制器驱动开发
寄存器配置 · 时钟分频 · DMA触发 · dmaengine框架
09
Codec驱动开发 (上)
snd_soc_codec_driver · 寄存器读写 · DAPM基础
10
Codec驱动开发 (下)
DAPM widget/route · Mixer/Mux · PCM接口配置
11
Machine驱动开发
snd_soc_dai_link · CPU DAI & Codec DAI · 设备树配置
12
ASoC框架深度解析
三大组件 · DAI与DMA绑定 · snd_pcm_runtime管理
13
设备树音频节点
语法基础 · I2S/Codec/DMA节点 · overlay调试
14
音频控制接口
snd_ctl · 音量/静音/开关 · 枚举/整数控制 · amixer
15
PCM操作集深入
hw_params · prepare · trigger · pointer 回调详解
16
音频中断处理
DMA中断 · 缓冲区更新 · kthread · 中断延迟影响
17
音频时钟与同步
MCLK/BCLK · PLL与抖动 · SRC · 多设备同步
18
低功耗音频设计
DAPM事件 · 音频路径动态开关 · Pop/Click抑制 · Suspend/Resume
19
音频调试技术
ftrace · printk/dev_dbg · proc文件系统 · 逻辑分析仪
20
用户空间测试工具
aplay/arecord · amixer/alsamixer · speaker-test · tinyalsa
21
音频延迟优化
路径延迟 · 缓冲区权衡 · period_size/buffer_size · RT内核
22
多通道音频支持
多通道PCM · TDM时隙 · 交织/解交织 · 环绕声
23
HDMI/DP音频驱动
音频数据包 · EDID解析 · HDMI Codec · DRM框架
24
USB音频设备驱动
UAC2协议 · 等时端点 · 枚举与参数协商
25
蓝牙音频驱动
A2DP集成 · SCO/PCM桥接 · SBC/AAC/LDAC · 延迟控制
26
音频路由与混音
DAPM动态路由 · 软件混音器 · 多流混音 · 音频策略引擎
27
音频策略与音量管理
音量曲线 · 硬件/软件音量 · 优先级管理 · Audio Focus
28
音频驱动测试与验证
LTP-DDT · 自动化脚本 · THD+N/SNR · 主观听音
29
内核主线化流程
checkpatch.pl · 维护者沟通 · Patch提交 · Review协作
30
综合实战项目
虚拟开发板ALSA驱动 · I2S+Codec+Machine · 录音播放 · Xrun调试