SSD_TinyAlsa使用参考
1. 概述¶
SSD20X本身Audio架构设计之初并未考虑Alsa使用场景,所以目前只做了TinyAlsa的相关播放/录音操作,目前暂不支持完善的Alsa操作,如:Dmix操作等
2. 平台alsa支持需要依赖的config¶
-
alsa需要依赖kernel的配置,kernel需要打开的配置如下(使用make menuconfig配置)
CONFIG_PM = y
CONFIG_SOUND = m
CONFIG_SND = m
CONFIG_SND_PCM_OSS = m
CONFIG_SND_PCM_TIMER = y
kernel会生成:
insmod soundcore.ko
insmod snd.ko
insmod snd-timer.ko
insmod snd-pcm.ko
-
insmod mi_alsa.ko
3. alsa测试方法:使用标准Tinyalsa测试¶
平台alsa可以直接使用标准的tinyalsa bin去测试,但是,因为tinyalsa本身也在跟着kernel版本走,针对我们SSD平台的ALSA适配,建议使用tinyalsa1. 1.1的版本测试,以下是测试过的tinyalsa的版本信息:
-
使用Tinyalsa的源码获取
网址:https://github.com/tinyalsa/tinyalsa/tree/1.1.1
下载:git clone https://github.com/tinyalsa/tinyalsa.git
-
tinyalsa编译
配置编译链:
export ARCH = arm export CROSS_COMPILE = arm-linux-gnueabihf- export CC = $(CROSS_COMPILE)gcc
直接在tinyalsa根目录执行:
make clean;make
-
生成的测试bin
生成目录:tinyalsa/utils bin:tinycap/tinymix/tinypcminfo/tinyplay
-
测试bin基本测试命令
tinyplay播放测试:
./tinyplay *.wav
tinypcminfo 查看 pcm 通道的相关信息:
./tinypcminfo -D 0
tinycap 录音测试:
./tinycap cap_out.wav
tinymix 设置和获取音量:
./tinymix contents //查看对应Dev的相关属性 ./tintmix set 1 60 //设置对应Dev的音量,这里是获取dev=1 ./tinymix get 1 //获取对应Dev的当前音量,这里是获取dev=1
4. 平台特性说明¶
AO说明:
a. Tinyalsa部分版本限制gain不能设负值,故将AO gain [-60, 30] mapping 至 [0, 90],如:-60→0,30→90。
b. 若使用mi_alsa、Lineout不支持采样率12k、24k(alsa本身限制);所支持采样率:8k、11.025k、16k、22.05k、32k、44.1k、48k; Lineout支持1chn单声道或立体声。
c. Alsa/Tinyalsa上层暂时无法下I2S参数:eWorkmode、bSyncClock、eFmt、eMclk,使用I2S时会受限制。