配置设备树:
root@goembed:~# aplay -c 2 -t wav -f S16_LE -v /media/mmcblk1p1/cc.wav
Playing WAVE '/media/mmcblk1p1/cc.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Plug PCM: Hardware PCM card 0 'imx6q-sabrelite-sgtl5000' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 44100
exact rate : 44100 (44100/1)
msbits : 16
buffer_size : 16384
period_size : 4096
period_time : 92879
tstamp_mode : NONE
period_step : 1
avail_min : 4096
period_event : 0
start_threshold : 16384
stop_threshold : 16384
silence_threshold: 0
silence_size : 0
boundary : 1073741824
appl_ptr : 0
hw_ptr : 0
aplay: pcm_write:1939: write error: Input/output error
root@goembed:~#
配置好之后,发现aplay出错,如上所示,实际上是电源芯片pfuze100导致 的,吧电源芯片的驱动去掉就好了(去掉I2C里面的配置)具体原因有待深究。
在之前系统调试的过程中,也发现有关电源芯片的配置会导致系统不稳定(有些板子启动一般就出现内核泄露,开始怀疑过内存的或是cpu问题,最后把下面那一句去掉就OK了),把不知道是不是电源芯片驱动不稳定的原因,影响到了sgtl5000和系统稳定性。
imx6qdl-goembed.dtsi
imx6dl.dtsi
实际上,关于cpu0节点的regulators配置,在“arch/arm/boot/dts/imx6dl.dtsi”下系统默认用系统自带的,如果改成电源芯片的,反而导致系统不稳定。
参考:
1.
iMX6 音频编解码器 SGTL5000 扩展
2.
qnx学习笔记-QNX下音频驱动调试-音频SGTL5000驱动的调试