Linux音频调试示例

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>;
			

你可能感兴趣的:(linux,嵌入式硬件)