linux音频控制在驱动中一般是一个主设备号,一堆次设备号,我的开发板上对应的音频接口如下
查看声卡驱动
ls -l /dev/snd/*
/dev/snd/controlC0 /dev/snd/pcmC1D0c /dev/snd/pcmC2D0p
/dev/snd/controlC1 /dev/snd/pcmC1D0p /dev/snd/pcmC3D0c
/dev/snd/controlC2 /dev/snd/pcmC1D1c /dev/snd/pcmC3D0p
/dev/snd/controlC3 /dev/snd/pcmC1D1p /dev/snd/timer
/dev/snd/pcmC0D0c /dev/snd/pcmC1D2c
/dev/snd/pcmC0D0p /dev/snd/pcmC1D2p
一个声卡共用一个主设备号,里面很多设备,每个设备基本上都会有控制(control)(eg:音量控制),声音采集(capture)和声音播放(playback),三种次设备号
eg:
/dev/snd/controlC0
/dev/snd/pcmC0D0c
/dev/snd/pcmC0D0p
我开发板上使用的驱动是tinyalsa
测试代码一般在开发板源码库上
eg: /opt/EmbedSky/TQT507/linux-4.9/longan/test/dragonboard/src/lib/tinyalsa-master-2.0/
源码库中可能有多套测试代码,我这个就有三套源码,可以向厂家咨询或者自己尝试
编译过程中可能出现,参数错误一类的问题,那就换个源码库吧,开发板厂家的话,也只是参考,自己实际验证才是真理
./tinyplay music-44K1.wav -D 0 -d 0
对用驱动名称 /dev/snd/pcmC0D0p
一般的都会将snd对应的编译成动态库进行调用,我嫌麻烦,直接编译在一起了
https://files.cnblogs.com/files/RYSBlog/tinyalsa-master-2.0.zip
//