RK3588 音频设备树、调试与性能调优
1. 先确认真实拓扑
源码中存在某驱动不等于板级启用。以运行 DTS 和 /proc/device-tree 为准:
1 | machine sound node |
2. RK3588 SoC 节点
rk3588s.dtsi 包含多组:
- I2S/TDM;
- legacy I2S;
- PDM;
- S/PDIF TX/RX;
- VAD;
- digital codec。
多数默认 disabled,由板级 DTS 选择,避免引脚和时钟冲突。
本树 rockchip_linux_defconfig 已启用 I2S/TDM、PDM、SPDIF/SPDIFRX、HDMI machine 等,但没有显式启用旧 SND_SOC_ROCKCHIP_I2S 和 VAD。因此使用 RK3588 的 I2S2/I2S3 旧 IP 或 VAD 时,必须检查最终 .config,不能只看 DTS 节点。
3. DTS 核对清单
status = "okay";compatible与驱动 match;clocks、clock-names;- assigned clock parent/rate;
- resets;
- DMA phandle/name;
- pinctrl;
- power domain;
- CPU/codec
sound-dai; dai-format;- bitclock/frame master;
- TDM slots/masks;
- audio-routing;
- GPIO amp/mute/jack;
- codec I2C address/regulator/MCLK。
4. 启动检查
1 | zcat /proc/config.gz | grep -E 'CONFIG_SND|ROCKCHIP' |
若 card 不出现,先查 probe/bind;若 card 出现但无声,再查 params、route、clock 和物理信号。
5. 分层测试
aplay -l确认设备;--dump-hw-params确认能力;- 用
hw:C,D排除插件; - 固定 48 kHz/S16_LE/2ch;
- 观察 BCLK/LRCK/data;
- 检查 DMA IRQ;
- 再启用 PipeWire/PulseAudio/GStreamer。
6. XRUN
1 | cat /proc/asound/card0/pcm0p/sub0/status |
调优顺序:
- 增大 period/buffer;
- 查 realtime throttling;
- 查 IRQ/CPU affinity;
- 查 cpufreq/idle;
- 查 DMA contention;
- 查 clock drift/ASRC;
- 查应用是否及时供数。
不要先通过无限增大 buffer 掩盖驱动 pointer/IRQ 错误。
7. 低延迟
- 使用
hw:; - 选硬件原生 rate/format;
- 2~4 periods 起步;
- realtime thread + memory lock;
- 避免运行时频繁 clock/power切换;
- 将音频 IRQ 和应用线程放到负载稳定 CPU;
- 验证 thermal throttling。
低延迟与低功耗相冲突,应以 XRUN 和端到端测量决定。
8. 多媒体边界
RKMPP/VPU 处理压缩视频/图像,不负责 ALSA PCM 调度。容器中的 AAC/Opus 等通常由用户态/其他解码器解码后送 ALSA;只有显式 compress/DSP offload 才绕开普通 PCM。
9. HDMI
- DRM connector 必须 connected;
- ELD 必须有效;
- mode set 后重新验证;
- sink 只报 2ch 时不能强制多声道;
- 多 HDMI/DP connector 要确认 card/device 映射。
10. PDM/VAD
- 检查 DMIC clock 和 pinctrl;
- 验证 channel mapping;
- 关闭 AGC/HPF 做基线;
- VAD 阈值需在真实噪声环境标定;
- suspend wake 要验证 wakeup-source 和电源域。
11. 动态调试
1 | mount -t debugfs none /sys/kernel/debug |
量产环境谨慎开启,日志会改变实时性。
12. 结论
RK3588 音频问题应按“card 绑定 → hw_params → clock/pin → DMA/IRQ → route/codec → 用户态”逐层定位。只看 aplay 错误或只改 mixer,通常无法定位跨 ASoC、clock、DMA、DRM 的问题。
正在加载留言…