3308调试audio 使用tinyplay pcm open 出错
# tinyplay /userdata/rec1_16k.wav -D 1 -c 1 -r 16000 -p 100
failed to open for pcm 1,0
但是使用aplay却没有问题
# aplay /userdata/rec1_16k.wav -c 1 -r 16000 -D hw:1,0
Playing WAVE '/userdata/rec1_16k.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
说明AUDIO设备应该没有问题,可能是tinyplay的问题,之前在3399上使用tinyplay也是可以用的,push替换/usr/bin/tinyplay
可以正确使用。
对比3399上tinyplay源码和3308的源码,发现差异很大
查找tinyplay官方源码https://codeload.github.com/tinyalsa/tinyalsa/tar.gz/
发现3399用的1.0.2,3308用的1.1.1,果断替换3308的版本
rk3308 的buildroot 中tinyalsa 默认是1.1.1版本"buildroot\package\tinyalsa\tinyalsa.mk" TINYALSA_VERSION = 1.1.1
修改1.1.1为1.0.2
修改 buildroot/package/tinyalsa/tinyalsa.hash 中包名和HASH值
从github download tinyalsa-1.0.2.tar.gz 放在buildroot/dl下
删除buildroot/package/tinyalsa/ 下两个patch文件 --1.0.2不需要,若需要也需重新生成对应的patch
重新buid buildroot即可
将生成的tinyplay push 到系统验证buildroot\output\firefly_rk3308_release\build\tinyalsa-1.0.2\utils