Linux asoc codec驱动调试小结

本篇记录下自己在调试codec驱动时的经验及注意事项,这里主要是放音playback调试

需要什么:

标准的linux codec驱动,如何编写驱动以后有时间再写一篇吧

原理图,需要查看对应的引脚,I2S的clck和data脚以及是否有reset pin脚和pdn引脚等

步骤:

1.编写好驱动,更改相关目录makfile和kconfig确认驱动可以编译通过并能编译进内核之中。

2.根据原理图和soc pinmux手册配置相关的gpio选择所要的通途,MCLK,BCLK,LRCLCK和DATA等

3.配置dts的pinmux,以及codec,codec配置方法根据驱动的注册方式可以放在i2c节点,也可以放在声卡节点。

调试之前可以先使用i2ctool工具验证i2c即硬件是否通了,i2c tools命令有i2cdetect,i2cset,i2cget,i2cdump四组,i2cdetect 检测挂在总线上的设备;i2cset 写命令;i2cget读命令;i2cdump 批量读命令,可以将i2cdetect ,i2cset等可执行文件拷贝到开发板data目录下。

#./i2cdetect -l

查看注册到内核的i2c 控制器

#./i2cdetect -y -r 4

查看挂在i2c-4总线上的设备地址

示例探测到设备地址为0x30

Linux asoc codec驱动调试小结_第1张图片

笔者在调试的时候碰到过几次i2c注册失败的 kernel直接挂死的log

Linux asoc codec驱动调试小结_第2张图片

通过i2cdetect确认设备存在之后多半就是驱动的问题,先确认是否驱动被编译进了内核

还遇到一个就是dts的配置的codec名字与驱动的i2c注册的名字不匹配

如果板子成功跑起来,通过timymix看一下驱动的konctrol接口能不能设置成功。比如操作我们加的音量控制kcontrol接口

Linux asoc codec驱动调试小结_第3张图片

如果操作报错 一般是pin脚没拉好 codec没有正常操作。

一切正常的话我们就播放文件验证是否能出声,没有声音怎么办

量一下clck和data,检查pinmux配置错了没有

你可能感兴趣的:(Linux,Alsa)