sound/ 音频子系统机制与原理详解
源码路径:
rk3588/kernel-6.1/sound/
内核版本:Linux 6.1(RK3588 / ARM64)
文档目录:linuxDoc/sound/
Linux 音频栈分为 ALSA Core(字符设备、PCM、控制接口)与 ASoC(SoC 嵌入式:CPU DAI + Codec + Machine)。RK3588 产品几乎走 ASoC + sound/soc/rockchip/,HDMI/扬声器/麦克风由 设备树声卡 描述。
目录
一、分层架构
| 层 | 回答的问题 |
|---|---|
| ALSA Core | 如何暴露 /dev/snd/pcmC0D0p |
| ASoC | 如何把 CPU、Codec、板级连线成 声卡 |
| Rockchip DAI | 如何操作 SoC 内置 I2S/PDM 寄存器与 DMA |
| Machine | 哪条 DAI link、哪个 GPIO 控功放 |
二、目录职责
| 目录 | 体量 | 职责 |
|---|---|---|
core/ |
中 | 声卡、PCM、混音、控制、proc |
soc/ |
最大 | ASoC 框架 + 各 SoC 厂商 + codecs |
soc/rockchip/ |
49 文件 | RK3588 音频 IP 驱动 |
usb/ |
大 | USB Audio Class |
hda/ |
大 | Intel HD Audio(RK 不用) |
pci/、drivers/ |
中 | 其它主机接口 |
sound_core.c:旧版 /dev/dsp 等,与 CONFIG_SOUND 相关;现代播放走 CONFIG_SND。
三、RK3588 在树中的位置
- CPU DAI:
rockchip,rk3588-i2s-tdm、rk3588-pdm、rk3588-spdif等 - 板级:
rockchip_multicodecs、rockchip_hdmi等平台驱动 - 片上数字 Codec:
rockchip,rk3588-codec-digital(GRF 配置,非完整 AC97) - VAD:
rockchip,rk3588-vad(语音检测,可接 I2S1/PDM0) - ASRC/DLP:树中包含采样率转换和环回驱动;其中本分支 Rockchip ASRC match table 不含 RK3588,DLP/ASRC 是否可用必须以 SoC compatible 和板级拓扑为准
无 独立 sound/drivers/rockchip;RK 代码集中在 soc/rockchip。
四、数据流概览
播放(Playback):
1 | 用户态 write → ALSA PCM → soc-pcm → DAI startup → DMA 到 I2S FIFO → 外置 Codec / HDMI |
采集(Capture):
1 | PDM/I2S RX → DMA → PCM capture buffer → 用户态 read |
DAPM:按 dapm_route 在 stream 开关时自动上电/静音相关 widget,降低 pop 与功耗。
功能组专题
| 编号 | 文档 |
|---|---|
| 01 | ALSA-Core与PCM设备机制与实现详解.md |
| 02 | ASoC框架与DAPM机制与实现详解.md |
| 03 | Rockchip-DAI控制器机制与实现详解.md |
| 04 | Rockchip机器驱动与HDMI机制与实现详解.md |
| 05 | Codec与其它音频路径机制与实现详解.md |
| 06 | RK3588平台音频拓扑与使用场景详解.md |
正在加载留言…