SoC : AM3354
SDK : TI-Android-JB-4.2.2-DevKit-4.1.1
使用 tinyplay 播放声音,或者调用 tinycap 进行录制声音,都会报错,报错内容为:
Unable to open PCM device 0 (cannot set hw params: Invalid argument)
设备的声卡为 WM8960,已经是找到了,声卡,
ls /dev/snd/controlC0 pcmC0D0c pcmC0D0p timer
cat /proc/asound/cards 0 [EVM ]: AM335X_EVM – AM335X EVM
AM335X EVM
跟踪了 tinyalsa 的代码,是在 pcm_open 设置硬件参数的时候出错了
// 出错的位置
if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_HW_PARAMS, ¶ms)) {
// ADD BY CARLOS
printf("\n\n");
printf("cannot set hw params\n\n");
oops(pcm, errno, "cannot set hw params");
goto fail_close;
}
不知道怎么会是,求支持
Jian Zhou:
继续跟踪进到这个函数ioctl(pcm->fd, SNDRV_PCM_IOCTL_HW_PARAMS, ¶ms)里看看哪里报错。
user4725089:
回复 Jian Zhou:
这个再跟踪的话,就是底层,设置 PCM 的了。
我是用一样的内核,但是在linux 的条件下,使用 aplay xx.wav 的话,就可以进行播放。也就是说,底层的驱动应该不存在问题。
user4725089:
回复 Jian Zhou:
使用 SDK 自带的 Music APP,去播放歌曲的时候,是可以播放声音的,可是为什么 使用命令 tinyplay 不能播放
Jian Zhou:
回复 user4725089:
建议还是在两种不同的播放器的操作下,定位到ioctl函数里,看看是不是应用层传递下去的参数有区别。