Linux音频调试示例
Posted 2023-04-01 xxccry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux音频调试示例相关的知识,希望对你有一定的参考价值。
Linux音频调试示例
- 硬件设计
- 设备树
- 在i2c节点添加设备
- 使能i2s总线
- 添加dai_link
- 修改pinmux
- 驱动
- code驱动
- platform驱动
- machine驱动
- 激活音频流
- 播放
- 录音
- 问题定位
- 声卡未识别
- 录音/播放失败
- 检查codec寄存器值
- 检查音频流的trace
硬件设计
cpu | codec | peripheral interface |
---|---|---|
nvidia-jetson | max9867 | line-in×1, hp×1 |
codec与cpu之间通过i2c读写寄存器,i2s传输音频信号(i2s总线简介)。
cpu作为主设备,codec作为从设备,cpu提供主时钟(aud_mclk)。
codec连接1路line-in,1路headphone。
设备树
因为cpu是nvidia jetson系列,所以基于Nvidia官方释放的“L4T Sources”(Jetson下载中心)修改。
在i2c节点添加设备
/ i2c@c250000 // 硬件连通的i2c通道status = "okay";max9867: codec@18 compatible = "maxim,max9867"; // 与官方驱动匹配reg = <0x18>; // i2c地址;;
;
使能i2s总线
// 在tegraxx_soc_audio.dtsi中查找
/ aconnect@2a41000 ahub i2s@2901300 // 硬件连通的i2s通道status = "okay";;;;
;
添加dai_link
/ sound status = "okay";compatible = "nvidia,tegra-audio-t186ref-mobile"; // 修改,与rt565x解绑nvidia,model = "tegra-snd-t19x-mobile"; // 修改,与rt565x解绑nvidia,audio-routing = // 需要与codec驱动匹配,从右到左,代表数据流向// x是前缀,与dai-link的name-prefix匹配"x LINE_IN", "x Linein","x Headphone", "x HPOUT"nvidia,dai-link-1 // dai-link,与codec和i2s匹配// codec-dai-name与codec驱动匹配link-name = "max9867";cpu-dai = <&tegra_i2s1>;codec-dai = <&max9867>;